立项背景和目标:价格波动、库存变化、公告更新、竞品动态等网页信息变化需要 7×24 小时实时盯守,人工巡检无法覆盖且易遗漏。本项目目标是开发多站点并发网页监控工具,自动检测目标网页变化并多渠道即时通知,帮助用户第一时间掌握关键信息变化。
核心功能模块:① 多站点并发监控——YAML 配置定义多站点(URL + CSS 选择器 + 检测间隔 + 通知渠道),单轮并发检查;② 精确变化检测——支持文本 diff、元素数量变化、属性变化三种检测模式,CSS 选择器圈定监控区域避免整页误报;③ 多渠道通知——Webhook JSON、飞书、钉钉、邮件 SMTP 四种通知方式,变化即时推送;④ 历史追溯——SQLite 持久化历史快照与变更日志,支持查询某站点全部变更记录;⑤ 守护调度——内置调度器按站点独立间隔运行,支持前台守护与 systemd 兼容部署。
业务流程:配置站点 → 定时抓取目标区域 → 与上次快照对比 → 有变化则多渠道通知 + 记录变更日志 → 无变化静默等待下一轮。
整体架构:六模块分层:config.py 配置解析校验;diff.py 实现三种变化检测算法;storage.py SQLite 快照与变更双表存储(线程安全);notifiers.py 四种通知渠道适配器;scheduler.py 调度器与守护循环;cli.py 命令行入口(含 --init/--once/--daemon/--list/--history/--reset)。原 v1 单站点模式完全兼容保留。
我的负责模块与结果:独立完成全部模块设计实现,交付 78 个新增自动化测试(含 13 个回归共 91 个全部通过),端到端冒烟测试覆盖"建基线→变化检测→通知→历史查询→重置"全流程。
难点与解决:① 动态渲染页面内容不稳定——对页面进行标准化处理(去空白/规范化)后再对比,减少误报;② 守护模式优雅退出——实现 SIGINT/SIGTERM 信号处理与 stop_event 双机制;③ 多线程并发写 SQLite——使用单连接 + 锁保证线程安全,实测高并发下无数据竞争。