现在的互联网服务已经深入社会方方面面,监控网站的变化是许多网站管理人员、信息采集人员、开发人员、运营人员,或者是普通人经常需要做的事情,比如:前段时间我就不断的关注教育局网站的"小升初"政策,目的是希望第一时间获得政策信息,便于后面为小孩填报初中志愿。又比如:我有时候会跟踪电商网站的某个商品价格,希望在它最优惠的时候购买。还比如:我们要从网站合规爬取公开信息,但是我们不希望频繁的去访问网站,也不想每次都全量获取信息,因此跟踪网站信息是否发生变化,非常有必要。
以上这些场景,如果没有自动化技术的应用,我只能是重复着每隔一段时间去打开网站查看相关内容。这种做法显然太笨拙。
本文主要推荐的是一个开源网页变更检测系统—— Changedetection。
Changedetection在GitHub具有16.8K星,源码地址:https://github.com/dgtlmoon/changedetection.io
主要的功能特性:
- 许多触发器过滤器,例如“文本触发器”、“通过选择器删除文本”、“忽略文本”、“提取文本”,也使用正则表达式!
- 使用xPath(1.0)和CSS选择器定位元素,使用JSONPath或jq轻松监控复杂的JSON
- 可在非JS和基于Chrome JS的“抓取器”之间快速切换
- 跟踪PDF文件中的更改(监控PDF中更改的文本,还监控PDF文件大小和校验)
- 轻松设置检测网站的频率
- 在提取文本之前执行JS(用于登录,参见UI中的示例!)
- 请求头,指定POST或GET和其他方法
- 使用“视觉工具”帮助定位特定元素
- 每个监视可配置代理
- 在网页中检测到更改时,发送带有通知的屏幕截图
使用操作举例
(1) 支持使用视觉选择器工具定位网页的特定部分
因此,很容易看到什么改变了,检查的字,行,或个别字符。
(2) 支持检测流程配置
使用浏览器步骤配置,在执行网页变更检测之前可以添加基本步骤,例如登录网站、将产品添加到购物车、接受cookie登录、输入日期和优化搜索。
(3) 支持惊艳的补货和价格变化通知
通过启用“单个产品页面的重新库存价格检测”选项以激活监控产品定价的最佳方式,这将提取HTML页面中的任何元数据,并为您提供许多选项来跟踪产品的定价。
之后,通过仪表板就可以轻松监控产品价格,当产品价格发生变化或再次有货时,获得警报和通知!
可以设置价格变化通知参数,价格上限和下限,价格变化百分比等。
应用场景举例
- 产品和服务在定价上有变化
- 缺货通知和返回库存通知
- 监控和跟踪PDF文件的更改,了解PDF文件何时有文本更改。
- 政府部门更新(更改通常仅在其网站上)
- 新的软件发布,当你不在他们的邮件列表中时的安全公告。
- 对变化感到困惑
- 补货警报和监控
- 房地产上市变化
- 知道什么时候你最喜欢的威士忌是销售,或其他特殊交易宣布之前,任何人
- 来自政府网站的COVID相关新闻
- 关注大学/组织新闻网站
- 检测和监控JSON API响应中的更改
- JSON API监控和警报
- 法律的和其他文件的变更
- 当文本出现在网站上时,通过通知触发API调用
- 使用JSON过滤器和JSON通知将API粘合在一起
- 根据Web内容的变化创建RSS源
- 监控HTML源代码的意外更改,加强您的PCI合规性
- 你有一个非常敏感的URL列表要看,你不想使用付费的替代品。(记住,你就是产品)
- 当某些关键字出现在Twitter搜索结果中时获得通知
- 主动搜索工作,在公司更新职业页面时获得通知,搜索工作门户网站的关键字。
- 在招聘平台上有新职位空缺时获取提醒
- 网站污损监控
- 合规监管
安装使用
这个项目支持使用Docker 安装。
docker compose up -d
单例模式启动Docker:
docker run -d --restart always -p "127.0.0.1:5000:5000" -v datastore-volume:/datastore --name changedetection.io dgtlmoon/changedetection.io
也可以使用Pip安装:
pip3 install changedetection.io
changedetection.io -d /path/to/empty/data/dir -p 5000
然后访问http://127.0.0.1:5000,即可访问UI。
该项目使用MIT开源许可证,因此也可以基于这个项目进行扩展开发、研究、部署。