爬虫断点爬取

  • 有些情况下,例如爬取大的站点,我们希望能暂停爬取,之后再恢复运行。
  • Scrapy通过如下工具支持这个功能:

一个把调度请求保存在磁盘的调度器
一个把访问请求保存在磁盘的副本过滤器[duplicates filter]
一个能持续保持爬虫状态(键/值对)的扩展

  • Job 路径:

要启用持久化支持,你只需要通过 JOBDIR 设置 job directory 选项。
这个路径将会存储 所有的请求数据来保持一个单独任务的状态(例如:一次
spider爬取(a spider run))。必须要注意的是,这个目录不允许被不同的
spider 共享,甚至是同一个spider的不同jobs/runs也不行。也就是说,
这个目录就是存储一个 单独 job的状态信息。

  • 怎么使用??? 要启用一个爬虫的持久化,运行以下命令:

scrapy crawl 爬虫名称 -s JOBDIR=crawls/爬虫名称

  • 然后,你就能在任何时候安全地停止爬虫(按Ctrl-C或者发送一个信号,这时候会看到crawls文件夹下保存了一些文件)。恢复这个爬虫也是同样的命令:

scrapy crawl 爬虫名称 -s JOBDIR=crawls/爬虫名称

  • 运行代码之后会默认生成以下文件:

spider.status : 爬虫运行的状态
requests.queue : 保存的请求的任务队列
requests.seen : 保存的是指纹

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。