有人可以向我解释Scrapy中的暂停/恢复功能是如何工作的吗?

我正在使用的scrapy版本是0.24.5

我有以下简单的蜘蛛:

class SampleSpider(Spider):

name = 'sample'

def start_requests(self):

yield Request(url='https://colostate.textbookrack.com/listingDetails?lst_id=1053')

yield Request(url='https://colostate.textbookrack.com/listingDetails?lst_id=1054')

yield Request(url='https://colostate.textbookrack.com/listingDetails?lst_id=1055')

def parse(self,response):

with open('responses.txt','a') as f:

f.write(response.url + '\n')

我正在运行它:

from twisted.internet import reactor

from scrapy.crawler import Crawler

from scrapy import log,signals

from scrapyproject.spiders.sample_spider import SampleSpider

spider = SampleSpider()

settings = get_project_settings()

settings.set('JOBDIR','/some/path/scrapy_cache')

settings.set('DOWNLOAD_DELAY',10)

crawler = Crawler(settings)

crawler.signals.connect(reactor.stop,signal=signals.spider_closed)

crawler.configure()

crawler.crawl(spider)

crawler.start()

log.start()

reactor.run()

如您所见,我启用了JOBDIR选项,以便保存爬行状态.

我将DOWNLOAD_DELAY设置为10秒,以便我可以在处理请求之前停止蜘蛛.我原以为我下次运行蜘蛛时,会不会重新生成请求.事实并非如此.

我在scrapy_cache文件夹中看到一个名为requests.queue的文件夹.但是,这总是空的.

看起来request.seen文件正在保存已发出的请求(使用SHA1哈希),这很棒.但是,下次运行spider时,会重新生成请求,并将(重复的)SHA1哈希值添加到文件中.我在Scrapy代码中跟踪了这个问题,看起来RFPDupeFilter打开带有’a’标志的requests.seen文件.因此它总是会丢弃文件中的先前值(至少这是我的Mac OS X上的行为).

最后,关于蜘蛛状态,我可以从Scrapy代码中看到蜘蛛状态在蜘蛛关闭时被保存,并在打开时被回读.但是,如果发生异常(例如,机器关闭),这不是很有用.我必须定期保存吗?

我在这里遇到的主要问题是:使用Scrapy的常见做法是什么,同时期望抓取会多次停止/恢复(例如,抓取一个非常大的网站时)?

python暂停和恢复_Scrapy如何暂停/恢复工作?相关推荐

  1. android如何暂停倒计时,在Android中暂停和恢复倒计时器和进度条?

    我正在制作一个简单的应用程序,它使用倒计时器,循环进度条和3个按钮启动,暂停和恢复 . 我想要做的是当特定活动开始时我按暂停它存储定时器的时间暂停并从那一点开始恢复 . 但问题是倒计时器没有停止,所以 ...

  2. Python检测后台存活实现脚本暂停、继续、结束(GUI界面版、系统托盘版)

    由于我的子系统经常自启动占用后台很大,任务管理器还无法直接关闭必须要用命令行,平常还好一到需要用到一些占用大的软件就非常卡,我想到了Python的os库可以去引用system函数来调用shell im ...

  3. c语言计算火车运行图调整暂停发售,列车运行图调整暂停发售是什么意思

    列车运行图调整暂停发售是什么意思?暂停发售什么时候恢复?为什么不能买票了?要调整多久呢?几号才能恢复正常?下面大家跟小编一起来看看详情吧. 列车运行图调整暂停发售是什么意思 列车车票暂停发售的原因有: ...

  4. 服务器上的打印机显示已暂停,hp打印机显示已暂停怎么解决

    hp打印机显示已暂停怎么解决 如果打印机还是"暂停"状态,可以按照下列解决方法中的步骤逐个操作,帮助您解决问题. 解决方法 步骤一:检查打印机状态 在 Windows XP 和 W ...

  5. Linux系统快照一键备份恢复、不同机器恢复、增量备份恢复

    Linux系统快照一键备份恢复.不同机器恢复.增量备份恢复 前言 由于前段时间在做一个自动化部署开发环境的项目需要重复安装多种服务以及中间件,但是生产环境的服务器不像自己的虚拟机可以使用快照,如果直接 ...

  6. SMO学习笔记(二)——还原(恢复)篇之完整恢复

    SQLSERVER2005恢复介绍: 三种恢复模式 (一).简单恢复模式         事务日志被自动截断,不能使用日志文件进行恢复. (二).完整恢复模式         保留所有操作的完整事务日 ...

  7. oracle日志备份少数据库,oracle 账号锁定日志Oracle数据库全量备份恢复和部分备份恢复...

    Oracle数据库全量备份恢复和部分备份恢复 今天又遇到了Oracle数据库序列的问题,索性来个全库的备份和恢复.如下 imp/exp 方式 表模式备份: ­ oracle@sencloudServe ...

  8. iphone彻底删除照片如何恢复_如何把删除的照片恢复?轻松解决恢复问题!

    如何把删除的照片恢复?轻松解决恢复问题!使用手机的时候,照片可是我们手机中重要的数据,很对人换手机也舍不得删除了以前的照片,有时候会误删了一些手机照片也是常有的事情,那么我们想要找回被删除手机照片应该 ...

  9. outlook从服务器中恢复已删除项目,Exchange 恢复已删除项目

    Exchange转储程序机制 Exchange使用转储程序(dumpster)机制,在将邮件删除后(指永久删除,并非删除至"已删除邮箱"),或将邮箱删除后,并不立即从数据库删除,而 ...

  10. MySQL-日志、完全备份恢复和增量备份恢复

    MySQL-日志.完全备份恢复和增量备份恢复 一.MySQL日志管理 1.MySQL日志文件 错误日志 二进制日志 中继日志 慢查询日志 二.查看日志状态命令 三.备份的重要性 1.造成数据丢失的原因 ...

最新文章

  1. 【Google Play】APK 扩展包 ( 2021年09月02日最新处理方案 | 扩展文件名格式 | 扩展文件下载存放地址 )
  2. 【Pushgateway】正则匹配,分隔逗号成数组
  3. Delphi 数据类型列表
  4. mwArray与C++接口
  5. zero ecilpse下载_推荐10个免费图片下载网站,助你摆脱找图烦恼!建议收藏
  6. 三星Galaxy Note 20相机细节曝光:这个镜头略显鸡肋或被舍弃
  7. 【ROS学习笔记】(十二)常用可视化工具
  8. Java Lock的使用
  9. C#串口介绍以及简单串口通信程序设计实现
  10. 2021年了!!Xshell7新手下载和安装教程(步骤超详细),以及远程与虚拟机连接
  11. 仿Tumblr点赞心破碎动画
  12. 从汽车尾气过滤陶瓷孔检测看远心镜头的应用前景-工业相机
  13. Proximity Based IoT Device Authentication翻译与理解
  14. 直角坐标系(Cartesian或Rectangular coordinate system)
  15. 你不得不会的EXCEL选择性粘贴
  16. 解决Ubuntu系统下启动root账户后Linux版本edge浏览器无法启动
  17. 时间获取相关函数mktime()、gmtime()
  18. Burn for mac免费直观刻录软件
  19. 基于SSH运动健身网站
  20. CSR8670 学习记录1——开始

热门文章

  1. arp病毒的解决方法
  2. 6.Docker技术入门与实战 --- Docker数据管理
  3. 5.分布式服务架构:原理、设计与实战 --- 基于调用链的服务治理系统的设计与实现
  4. 1.PHP核心技术与最佳实践 --- 面向对象思想的核心概念
  5. 20.卷1(套接字联网API)---广播
  6. 51. Element replaceChild() 方法
  7. 百度坐标转换GPS坐标
  8. css中的clip:rect() 只能在绝对定位的元素上使用
  9. github创建仓库,往github上上传自己的项目
  10. 地区picker 各选择器,优劣分析