如何停止scrapy CrawlSpider并稍后续接?
我有一个Scrapy的CrawlSpider,它需要爬取很多很多的链接。我希望能够在爬虫运行的时候随时停止,并且保存当前的状态,以后可以继续爬,而不需要从头开始。请问在Scrapy这个框架里,有办法做到这一点吗?
3 个回答
2
Scrapy现在在他们的网站上有这个功能的详细说明,大家可以去看看:
下面是实际的命令:
scrapy crawl somespider -s JOBDIR=crawls/somespider-1
10
我想分享一下,最新版本的scrapy里加入了这个功能,不过参数的名字变了。你应该这样使用:
scrapy crawl thespider --set JOBDIR=run1
想了解更多信息,可以查看这里 http://doc.scrapy.org/en/latest/topics/jobs.html#job-directory
6
几个月前,ML上有个问题:http://groups.google.com/group/scrapy-users/browse_thread/thread/6a8df07daff723fc?pli=1
引用Pablo的话:
我们不仅在考虑这个功能,还在努力开发中。目前我有两个可以用的补丁在我的MQ里,添加了这个功能,如果有人想提前试试,可以使用(需要按顺序应用): http://hg.scrapy.org/users/pablo/mq/file/tip/scheduler_single_spider.... http://hg.scrapy.org/users/pablo/mq/file/tip/persistent_scheduler.patch 要像以前一样运行爬虫(不保存状态):
scrapy crawl thespider
要运行一个爬虫,并把调度器和重复过滤器的状态存储在一个目录里:
scrapy crawl thespider --set SCHEDULER_DIR=run1
在爬取过程中,你可以按 ^C 来取消爬取,然后稍后用以下命令继续:
scrapy crawl thespider --set SCHEDULER_DIR=run1
SCHEDULER_DIR这个设置的名称在最终发布前可能会改变,但想法是一样的——你需要提供一个目录来保存状态。