Keepa在亚马逊美国站很好用,到了日本站就水土不服。更新延迟、商品缺失,至于乐天、雅虎拍卖、煤炉这些本土平台,它干脆不管。

如果你常在日本电商买东西,这种割裂感很熟悉。4个平台4种界面,价格历史各自为政。那个9800日元的笔记本支架,上个月是促销价还是常年这个数?煤炉上这件二手,相比上周是贵了还是捡漏?没人告诉你。

打开网易新闻 查看精彩图片

开发者PricePulse JP就是冲着这个痛点来的。真正的技术挑战在于:4个长得完全不一样的网站,怎么稳定抓出价格。

最傻的办法是找DOM元素读textContent。亚马逊 routinely 改CSS类名,乐天的商家还能自己装修店铺。这条路走不通。

亚马逊日本站的策略是"8保险"。维护8个选择器的优先级队列,从corePriceDisplay_desktop_feature_div到最后的通配符,哪个先返回非零价格就用哪个。DOM再变,总有一个能命中。

乐天更难搞。商家自定义装修导致DOM千差万别,但平台强制要求schema.org Product元数据。每个商品页都有meta itemprop="price",主题装修动不了这个。抓元数据优先,缺失才回退DOM。

雅虎购物有两套URL(store.shopping.yahoo.co.jp和shopping.yahoo.co.jp/products/),同样暴露schema.org的price元数据。策略照抄乐天。

煤炉也用schema.org,外加product:price:amount的OpenGraph标签。特殊处理在于:商品售出后价格元数据会消失。这时候parser返回null而不是0,避免把"已售出"误记成"降价到零"。

架构上有个经典选择题:解析放在content script(有实时DOM)还是background service worker(能fetch+DOMParser但无 live DOM)?答案是都要。页面加载时即时解析给反馈,后台定时轮询做追踪。