python - Scrapy如何将 "re-parse"html页面记录到数据库中?

标签 python postgresql scrapy

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

最佳答案

你可以自己写downloader middleware并模仿标准 HttpCacheMiddleware 正在做的事情。详细信息取决于您要如何进行以及是否要重用当前的蜘蛛。

如果您想使用当前的蜘蛛程序,那么您的中间件必须:

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

优点是您不必触摸您的蜘蛛。缺点是网站可能同时发生变化,当前内容不必与保存的内容完全匹配。

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

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

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

关于python - Scrapy如何将 "re-parse"html页面记录到数据库中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45743691/

相关文章:

spring - 组织.postgresql.util.PSQLException : Large Objects may not be used in auto-commit mode

ruby-on-rails - 如何在 Rails 数据库中保存哈希值?

python - 在Python中通过多列控制聚合的输出?

Python sklearn 值错误 : array is too big

python - 如何使用字典键值调用函数?

sql - 优化 INSERT/UPDATE/DELETE 操作

selenium - 如何在 Scrapinghub 上安装 xvfb 以使用 Selenium?

python xpath 如何在我的xpath中添加特殊字符?

python - 如何在 Python Scrapy 中限制每个站点的关注页面数

Python将二进制图像(PNG)数据写入文件