- 年份
- 2024
- 角色
- 独立开发
- 技术
- Node.js · Playwright · Diff
- 最近更新
- 2024
起因是我盯着一个课程的开课页面刷了两周,直到某天下午它更新了而我没看到,名额没了。
难点不是抓取,是判定
抓网页很简单,难的是判断这次变化值不值得通知。直接做文本 diff 会被时间戳、随机 token、广告位轮播淹没,一天能给你发几十条。
我的方案:
- 用 CSS 选择器圈定关注区域,只对比这部分
- 归一化:去掉数字、日期、空白差异
- 语义相似度:对变化内容算一次相似度,低于阈值才判定为「实质变化」
- 同类变化在冷却期内合并
做完这几步,误报从每天 30+ 降到每周不到 1 次。
技术栈
Playwright 负责渲染(很多页面是 JS 动态生成的,纯 fetch 拿不到),Node.js 调度,结果存 SQLite,通知走 Telegram Bot。
复盘
这个项目让我明白:工具的价值不在功能多,在于它能不能让你安心地不再去想这件事。Notify 太多等于没 notify。