如何抓取数据库中记录的 html 页面"re-parse"?



我已经用Scrapy在我的数据库中记录了html页面。我想使用相同的管道重新解析它们。如何从数据库中获取页面,使其遵循与普通 Scrapy 管道相同的管道?

您可以编写自己的下载器中间件并模仿标准HttpCacheMiddleware正在做的事情。详细信息取决于您的确切方式以及是否要重用当前的蜘蛛。

如果你想使用currect spiders,那么你的中间件必须:

  1. process_request方法获取每个请求的指纹。
  2. 将此指纹与保存的 HTML 页面匹配。
  3. 返回从该 HTML 构建Response

优点是你不必触摸你的蜘蛛。缺点是网站可能在此期间发生了变化,当前内容不必与保存的内容完全匹配。

如果你想创建新的蜘蛛或修改currect,那么:

  1. 您的爬虫应该实现start_requests方法并产生中间件可以处理的Request(例如文件名,数据库ID(。
  2. 基于Request,中间件读取保存的页面并返回从HTML中制作Response

优点是您将准确处理已保存的内容。缺点是您必须为此目的实现另一个蜘蛛。

最新更新