scrapy采集数据时暂停和恢复采集的方法

通过scrapy进行大数据采集时,默认的scrpay crawl spider 是不能暂停的,否则你需要重新来过,非常不方便,实际上scrapy提供了相关的方法保存采集的作业状态,而且非常简单。
Python
scrapy crawl somespider -s JOBDIR=crawls/somespider-1
运行命令式使用上面的命令行代码即可,中途可以你可以使用ctrl+c终止采集程序的运行,恢复是,还是运行上面这条命令即可,
其中crawls/somespider 是一个保存采集列表状态的目录,千万不要同时开多个蜘蛛程序使用同一个目录,会混乱的。
sharejs.com提供这个方法希望能帮助你。
还有更简单的方法,就是在settings.py文件里加入下面的代码:
JOBDIR='sharejs.com'
使用命令scrapy crawl somespider,就会自动生成一个sharejs.com的目录,然后将工作列表放到这个文件夹里
官方的文档说法是下面
怎么使用
要启用一个爬虫的持久化,运行以下命令:
scrapy crawl somespider -s JOBDIR=crawls/somespider-1
然后,你就能在任何时候安全地停止爬虫(按Ctrl-C或者发送一个信号)。恢复这个爬虫也是同样的命令:
scrapy crawl somespider -s JOBDIR=crawls/somespider-1
保持状态
有的时候,你希望持续保持一些运行长时间的蜘蛛的状态。这时您可以使用 spider.state 属性, 该属性的类型必须是dict. scrapy提供了内置扩展负责在spider启动或结束时,从工作路径(job directory)中序列化、存储、加载属性。
下面这个例子展示了使用spider state的回调函数(callback)(简洁起见,省略了其他的代码):
def parse_item(self, response): # parse item here self.state['items_count'] = self.state.get('items_count', 0) + 1

您可以选择一种方式赞助本站

支付宝转账赞助

支付宝扫一扫赞助

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

图片 表情