我已经用Scrapy在我的数据库中记录了html页面。我想使用相同的管道重新解析它们。如何从数据库中获取页面,使其遵循与普通 Scrapy 管道相同的管道?
您可以编写自己的下载器中间件并模仿标准HttpCacheMiddleware
正在做的事情。详细信息取决于您的确切方式以及是否要重用当前的蜘蛛。
如果你想使用currect spiders,那么你的中间件必须:
process_request
方法获取每个请求的指纹。- 将此指纹与保存的 HTML 页面匹配。
- 返回从该 HTML 构建
Response
。
优点是你不必触摸你的蜘蛛。缺点是网站可能在此期间发生了变化,当前内容不必与保存的内容完全匹配。
如果你想创建新的蜘蛛或修改currect,那么:
- 您的爬虫应该实现
start_requests
方法并产生中间件可以处理的Request
(例如文件名,数据库ID(。 - 基于
Request
,中间件读取保存的页面并返回从HTML中制作Response
。
优点是您将准确处理已保存的内容。缺点是您必须为此目的实现另一个蜘蛛。