在存储的数据上重播Scrapy蜘蛛

时间:2011-10-14 10:34:46

标签: python web-crawler scrapy

我已开始使用Scrapy来抓取一些网站。如果我稍后在我的模型中添加一个新字段或更改我的解析函数,我希望能够“重播”下载的原始数据,以便再次删除它。看起来Scrapy能够在一个点上将原始数据存储在重放文件中:

http://dev.scrapy.org/browser/scrapy/trunk/scrapy/command/commands/replay.py?rev=168

但是在当前版本的Scrapy中似乎已经删除了此功能。还有另一种方法可以达到这个目的吗?

2 个答案:

答案 0 :(得分:19)

如果您运行crawl --record=[cache.file] [scraper],则可以使用replay [scraper]

或者,您可以使用DOWNLOADER_MIDDLEWARES将所有回复缓存到DOWNLOADER_MIDDLEWARES = { 'scrapy.contrib.downloadermiddleware.httpcache.HttpCacheMiddleware': 300, } 中来缓存所有回复:

{{1}}

如果这样做,每次运行刮刀时,它都会先检查文件系统。

答案 1 :(得分:4)

您可以按照http://scrapy.readthedocs.org/en/latest/topics/downloader-middleware.html?highlight=FilesystemCacheStorage#httpcache-enabled

启用HTTPCACHE_ENABLED

缓存所有http请求和响应以实现恢复爬网。

或尝试使用暂停和恢复抓取的作业 http://scrapy.readthedocs.org/en/latest/topics/jobs.html