我已经用 Scrapy 在我的数据库中记录了 html 页面。我想用同一条管道重新解析它们。如何从数据库中获取页面,使其遵循与普通 Scrapy 管道相同的管道?
最佳答案
你可以自己写downloader middleware并模仿标准 HttpCacheMiddleware
正在做的事情。详细信息取决于您要如何进行以及是否要重用当前的蜘蛛。
如果您想使用当前的蜘蛛程序,那么您的中间件必须:
- 在
process_request
方法中获取每个请求的指纹。 - 将此指纹与保存的 HTML 页面进行匹配。
- 返回从该 HTML 制作的
Response
。
优点是您不必触摸您的蜘蛛。缺点是网站可能同时发生变化,当前内容不必与保存的内容完全匹配。
如果你想创建新的蜘蛛或修改currect,那么:
- 您的爬虫应该实现
start_requests
方法并产生您的中间件可以处理的Request
(例如文件名、数据库ID)。 - 基于
Request
,中间件读取保存的页面并返回从 HTML 制作的Response
。
优点是您将准确处理您保存的内容。缺点是您必须为此目的实现另一个蜘蛛。
关于python - Scrapy如何将 "re-parse"html页面记录到数据库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45743691/