我让 AI 每周定时抓取竞品价格,自动汇总给我
我遇到的具体问题
我管着三家的线上价格表:自家店、竞品甲、竞品乙,加起来 46 个 SKU。每周五上午老板要一份对比,我前两周都是手动开三个网页、复制粘贴到表格,光对数字就花掉一个多小时,还把竞品乙的「¥1,299/打」错当成「¥1,299/个」报上去,被老板当面点了一句。第三周我决定让 WorkBuddy 每周五自己抓、自己汇。第一次跑就炸了——脚本读出来全是 undefined。
为什么这事值得自动化
频率是每周 1 次,单次手动 60–75 分钟,一个月就是 4–5 小时,而且是人最容易抄错数字的时候。自动化之后单次跑约 40 秒,我只需要看一眼汇总。把这部分时间让出来,比纠结哪个工具好用实在。
我是怎么用 WorkBuddy 做的
我建了个定时任务(recurring automation),每周五 09:00 触发,让它:
- fetch 三个商品页;
- 抽价格文本,归一化成「人民币元/件」;
- 和上周快照 diff,输出改动项;
- 把结果写成一份 markdown 发我。
关键配置里我让它把每次抓到的原始 JSON 先存盘,方便我回看。下面是其中一步——把三家的乱数据收拢成一个数组:
const rows = rawPages.map(p => ({
sku: p.sku,
priceCNY: normalizePrice(p.priceText, p.unit), // 元/件
updatedAt: new Date().toISOString(),
}));
中间卡在哪 & 怎么绕过去
两个真实的坑。
坑一:竞品乙上周改了页面结构,原来抓 div.price 的位置变成了 span[data-price],我的选择器直接返回空,node 跑出来 TypeError: Cannot read properties of undefined (reading 'textContent')。排查时我没去改选择器硬凑,而是让任务把抓取到的原始 HTML 落盘,对着 DOM 重新定位,把选择器改成 meta[property="og:price:amount"]——他们虽然改了展示结构,但开放图谱标签没动。这之后我让任务每次都备份原始 HTML,结构再变也能回看。
坑二:三家单位不统一。我家是「元/件」,竞品甲是「元/打」(一打 12 件),竞品乙干脆标「USD 189」。第一次汇总我把甲的价格当单件算,整列低了 12 倍。修法是先统一币种和单位:美元那段用当周汇率折成人民币,打→件用 12 除。这里我顺手把换算逻辑拆出来,量和汇率都走可配置,不写死在脚本里。
顺带的几个发现
- 抓回来的原始 JSON 一团乱,我 review 时先在 JSON 格式化工具 里粘进去美化,一眼就能看出哪个字段缺了。现在每次任务跑完,我都把中间 JSON 丢进去扫一遍再发老板。
- 单位换算(打→件、箱→件、磅→克)我本来是手算的,后来发现 单位换算工具 能直接给系数,我把常用换算表贴进任务 prompt,省得每次现算。
- 备份原始 HTML 这个习惯救了我两次——结构一变,没备份就只能干瞪眼重抓。
你也可以这样用
换个场景:你做投放,想每周看竞品在官网挂的「限时价」。把那几个商品页 URL 丢进同样的定时任务,归一化后只 diff 降价项,每周五自动给你一份「这周谁降价了」的清单。监控对象从 3 个变 10 个,成本几乎不变。
常见问题
Q:网站要登录才能看价格,定时任务抓不到怎么办? A:登录态的页面别硬抓,先确认有没有公开的价格 API 或 RSS;没有的话这条路不适合,换个数据源。
Q:抓回来的数字偶尔不对,怎么信? A:让任务每次备份原始 HTML 和原始 JSON,用 JSON 格式化工具 抽查;数字有疑问直接回看那次落盘的 HTML,比瞎猜强。
Q:单位换算的系数会过期吗? A:汇率会变,所以别写死。我在任务里把汇率做成每周读一次的配置项;固定的物理换算(打→件=12)不会变,可以直接用 单位换算工具 的系数。
Q:定时任务没按时跑怎么办? A:先看自动化列表里的执行记录,确认是没触发还是触发了但报错。多数情况是目标站点临时 403,加个重试间隔就能解决。