咨询scrapy_wayback-machine兼容的Scrapy版本及替代工具
Scrapy-Wayback-Middleware 兼容问题及替代方案
问题背景
尝试使用scrapy_wayback_machine中间件通过Scrapy抓取Wayback Machine归档内容时,遇到版本兼容警告:
第一次运行基础爬虫时的警告:
2023-12-11 18:43:33 [py.warnings] WARNING: /Users/meganegler/opt/anaconda3/lib/python3.9/site-packages/scrapy_wayback_machine/__init__.py:83: ScrapyDeprecationWarning: ExecutionEngine.schedule is deprecated, please use ExecutionEngine.crawl or ExecutionEngine.download instead self.crawler.engine.schedule(snapshot_request, spider)
将代码中schedule改为crawl后,仍出现警告:
2023-12-11 18:54:52 [py.warnings] WARNING: /Users/meganegler/opt/anaconda3/lib/python3.9/site-packages/scrapy_wayback_machine/__init__.py:83: ScrapyDeprecationWarning: Passing a 'spider' argument to ExecutionEngine.crawl is deprecated self.crawler.engine.crawl(snapshot_request, spider)
由此推测存在Scrapy版本不兼容问题。
关于scrapy_wayback_machine的疑问解答
- 近期使用情况:该中间件最后一次代码更新在2021年,社区活跃度极低,近期几乎没有用户反馈或维护记录,属于半废弃状态。
- 适配Scrapy版本:官方适配的版本为Scrapy 2.5及以下,Scrapy 2.6及以上版本对
ExecutionEngine的API做了调整,导致旧版中间件的调用方式触发弃用警告,甚至可能出现运行错误。
适配Wayback Machine的替代工具
- 直接调用Wayback Machine API:无需依赖第三方中间件,自行构造API请求(如获取目标URL的快照列表、指定快照内容),在Scrapy爬虫中处理请求与响应,完全适配新版Scrapy,灵活性最高。
- waybackpack:专注于批量下载Wayback Machine快照的工具,支持命令行使用,也可作为Python库集成到Scrapy项目中,支持自定义快照时间范围、过滤规则等,维护状态良好。
- 自定义Scrapy中间件:基于Wayback Machine的API规范,编写轻量级中间件,替换旧版中间件的逻辑,适配新版Scrapy的API(例如调用
crawl时不传递spider参数,或改用download方法)。
内容的提问来源于stack exchange,提问作者egg_yolk
相关产品推荐
相关产品推荐

