Spider-scrapy断点续爬

Posted python-xiacaip

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spider-scrapy断点续爬相关的知识,希望对你有一定的参考价值。

scrapy的每一个爬虫,暂停时可以记录暂停状态以及爬取了哪些url,重启时可以从暂停状态开始爬取过的URL不在爬取

实现暂停与重启记录状态

方法一:

1、首先cd进入到scrapy项目里(当然你也可以通过编写脚本Python文件直接在pycharm中运行)

2、在scrapy项目里创建保存记录信息的文件夹

3、执行命令:

  scrapy crawl 爬虫名称 -s JOBDIR=保存记录信息的路径

  如:scrapy crawl xxx -s JOBDIR=xxx/xxx

  执行命令会启动指定爬虫,并且记录状态到指定目录

爬虫已经启动,我们可以按键盘上的ctrl+c停止爬虫,停止后我们看一下记录文件夹,会多出3个文件,其中的requests.queue文件夹里的p0文件就是URL记录文件,这个文件存在就说明还有未完成的URL,当所有URL完成后会自动删除此文件

当我们重新执行命令:scrapy crawl xxx -s JOBDIR=xxx/xxx  时爬虫会根据p0文件从停止的地方开始继续爬取。

方法二:

在settings.py文件里加入下面的代码: 

JOBDIR=‘xxx.com‘
使用命令scrapy crawl xxxspider,就会自动生成一个xxx.com的目录,然后将工作列表放到这个文件夹里 

 

以上这两个方法,有时候并不是非常有效,之前项目中用到这两种方法,遇到的问题也不少,比如说有时候会发现无法用ctri+终止,或者是再次启动的时候发现爬虫无法正常爬取,开始即结束,当你第二次输入启动命令启动时爬虫会覆盖掉原来的数据,重新开始,起不到很好的暂停重启的效果。当时推测这个问题出现的原因可能是爬取的数据较少引起的,但是后来发现并不是,也一直在找这个问题出现的原因。


以上是关于Spider-scrapy断点续爬的主要内容,如果未能解决你的问题,请参考以下文章

支持断点续爬的腾讯街景数据抓取

分布式爬虫Scrapy_redis原理分析并实现断点续爬

每日关键词-170226

scrapy-redis 分布式 案例一

无限 debugger 能劝退 Spider Engineer 吗?原来我还没入门!

无限 debugger 能劝退 Spider Engineer 吗?原来我还没入门!