【问题标题】:Replay a Scrapy spider using cache stored on S3使用存储在 S3 上的缓存重放 Scrapy 蜘蛛
【发布时间】:2020-03-27 18:59:39
【问题描述】:

我已经开始学习 Scrapy 来抓取网站。 我构建了一个简单的爬虫来查找我的物品,并将我的存储原始数据放在 AWS-S3 上。

为了满足需求,我启用了 Scrapy 缓存。 为此,我添加了这个 s3 扩展:

scrapy-fargate-sls-guide

它运行良好,我在 S3 上看到了我的缓存文件夹。 现在,我希望能够“重播”原始“s3-data”以再次抓取它,以防我需要获取其他项目或更改我的解析。 有没有办法做到这一点?

我的跑步者代码:

import scrapy
from scrapy.crawler import CrawlerProcess
from scrapy.utils.project import get_project_settings
from my_scraper.spiders.my_scraper import MyScraper

from datetime import datetime

settings = get_project_settings()
#settings['LOG_LEVEL'] = 'INFO'

#* Data File output
date = datetime.strftime(datetime.now(), '%Y%m%d')
settings['FEED_URI'] = 's3://BUCKET/KEY/PREFIX-DATA/dumpdate=%s/test.json' %date 
#settings['FEED_URI'] = './data/test_handler.json'
#settings['FEED_FORMAT'] = 'json'
#settings['LOG_FILE'] = 'Q1.log'


#* Enabled cache.
settings['HTTPCACHE_EXPIRATION_SECS'] =  60 * 60 * 24 * 7 # Life Time cache
settings['HTTPCACHE_DIR'] = 'httpcache' #Local cache dir
settings['HTTPCACHE_ENABLED'] = True
#* Extension 
settings["HTTPCACHE_STORAGE"] = "my_scraper.extensions.s3cache.S3CacheStorage"
settings["S3CACHE_URI"] = 's3://BUCKET/KEY/PREFIX-CACHE/dumpdate=%s' %date      


process = CrawlerProcess(settings=settings)
process.crawl(MyScraper)
process.start()

【问题讨论】:

    标签: python-3.x amazon-web-services amazon-s3 scrapy


    【解决方案1】:

    只要您的自定义缓存存储实现了retrieve_response,我希望它可以工作™

    但是,如果您没有以 the FilesystemCacheStorage does it 或类似方案的方式将请求存储在由其指纹哈希索引的 S3 中,我不希望您能够找到 要从该方法返回的 RequestResponse 对象。

    【讨论】:

      猜你喜欢
      • 2011-12-07
      • 1970-01-01
      • 2018-11-29
      • 2019-12-09
      • 2012-12-12
      • 2011-02-20
      • 1970-01-01
      • 2017-07-09
      • 1970-01-01
      相关资源
      最近更新 更多