python - 如何监控 Scrapy 蜘蛛的健康状况
问题描述
我有一个 Scrapy 项目,它解析大约 30 多个列表站点,我正在尝试找出一种方法,如果更新任何站点的底层 Web 结构,如何维护和监控刮板的一致性。
我已经有两种方法可以尝试实现这一目标:
我有一套规则,
DropItem
如果一些核心字段不存在(产品标题、价格和其他几个总是存在的)。这在一定程度上有所帮助,但它假设如果那些 3/4 字段都可以,那么结构的其余部分也可以。对于上下文,我不能使所有其他字段都需要,因为它们本质上是可选的(即colour
,size
等)我通过在一组本地保存的 HTML 正文上为每个蜘蛛运行刮板来工作。这有利于整体代码质量,但不能解决确定蜘蛛可能因 DOM 更改而损坏的问题。
我想按照以下方式做一些事情;
- 潜在地计算每次爬网填充字段的平均频率。如果
size
平均30%
时间存在,则表示正在返回90%
或1%
可能引发警报的作业。但是我可以想到很多情况,这会触发一些误报,或者甚至不会触发任何事情并且仍然会被破坏 - 我的另一个想法是有一个以某种方式监视 HTML 结构的服务,这可以在抓取作业之前运行,如果检测到更改则暂停。对我来说,这似乎是最具弹性的选择,但我不知道如何实现这一目标。
TL;博士
如何监控 HTML 页面结构的变化,以避免运行导致数据损坏的 Scrapy 作业?
还有哪些其他选项可以检测抓取作业可能已损坏、启发式或其他方式?DropItem
已经尽可能使用。
解决方案
检查蜘蛛兽
Spidermon 是 Scrapy 蜘蛛的扩展。该软件包为数据验证、统计监控和通知消息提供了有用的工具。这样您就可以将监控任务留给 Spidermon,然后只检查报告/通知。
推荐阅读
- image-processing - 零镜头学习
- android - FIleupload 不能在 web 视图中工作吗?
- microsoft-cognitive - 调用异常检测 API 时出错
- .htaccess - .htaccess 重写以使用 http/https 将别名重定向到根域子目录
- c# - 从列表中的txt获取数字,然后对列表进行排序C#
- php - 如何在 Smarty 中使用变量变量?
- php - 数据库中的孤立会话管理记录。如何处理问题?数据库稳定性风险
- sql - 需要在主更新查询中从子查询访问表
- python - 在输出仍然是变量而不是数字时查找列表中的最大变量
- vba - VBA快速方法从地址数组中绘制数千个单元格