In this Article
大型家居零售商是热门的抓取目标,却也始终被低估其复杂性。难点不在于访问,而在于被定价的并非单一对象:一个产品页面是一组变体,每种变体都有各自的价格、库存和实际配送情况。
本指南介绍能够经受该品类实际考验的数据模型,以及决定比较是否有意义的字段。
要点
- 变体是规模难题。一个产品页面可能包含数十种颜色、尺寸和材质组合,每种都有自己的价格和库存。
- 配送是价格的一部分,此品类中忽略配送的数据集比较的是错误数字。
- 同一商品会以不同名称出现于不同零售商处,因此跨零售商匹配是这里最棘手的工程问题。
- 可售性因地区而异,没有配送背景的全国价格没有描述任何具体情况。
- 促销持续不断,这使得单次快照对于此品类几乎毫无意义。
为什么商品目录会急剧膨胀?
Wayfair 抓取因一个事实而受阻:商品列表是一组产品,而非单个商品。我们称之为4 层商品目录模型。
| 层级 | 包含内容 | 陷阱 |
|---|---|---|
| 1. 产品系列 | 购物者进入的页面 | 只存储这一层会丢失所有实际价格 |
| 2. 变体 | 颜色、尺寸、材质组合 | 价格和库存存在于这一层,不在上层 |
| 3. 报价 | 卖家、商品状况、配送选项 | 商城商品列表隐藏在一个页面之后 |
| 4. 总成本 | 价格加运费加附加费 | 购物者实际比较的唯一数字 |
此品类中的大多数数据集存储第一层并将其称为价格。这样产生的数字通常是最便宜变体的价格,有时是中间变体的价格,而且在不同零售商之间从不一致。明确建模变体,正是可用数据集与看似合理的数据集之间的区别。
为什么配送会改变答案?
因为家具体积庞大,配送可能占总成本的很大比例。一张标价低于竞争对手的沙发,送达后的成本可能更高;对于大型商品,配送选项本身也不同:路边交付、送至指定房间、包含组装。
配送费用还取决于目的地,这意味着全国统一价格在此品类中只是虚构。不同地区的两位客户从同一零售商购买同一商品,确实会支付不同的总价。
实用规则是:按确定的配送邮政编码采集,并将其与每条记录一同存储。没有它,价格序列会混合不同地区,你看到的差异是地理因素而非定价策略。城市和 ZIP 级出口使这一过程能够复现。
如何在不同零售商之间匹配商品?
| 信号 | 适用情形 | 应避免的情形 |
|---|---|---|
| 制造商零件号 | 已公开:可获得的最强匹配信号 | 零售商将其隐藏,这通常是有意为之 |
| 品牌加型号名称 | 两者均存在且一致 | 零售商专属命名会使其失效 |
| 尺寸和材质 | 作为确认信号 | 单独使用;许多产品共享规格 |
| 图片比较 | 文本信号相冲突 | 需要确定性时;视觉匹配具有概率性 |
专属命名是刻意的。零售商特意重命名产品,让直接比较变得困难,这意味着此品类中任何跨零售商数据集都带有置信度,而不是干净的连接结果。应报告该置信度,而不是将其隐藏。
有哪些限制?
条款限制自动访问大型零售网站,因此范围和速率是设计决策。针对明确产品清单的定向采集,与提取完整商品目录是不同的做法。
请保持克制。变体展开会迅速增加请求量;一个产品系列可能意味着数十次调用。按主机设置的速率限制在这里比几乎任何地方都更重要。
快照不是价格。促销持续进行,因此单次观察无法支持关于某零售商定价的主张。应反复采样并报告时间窗口。
不要将评论作为个人数据采集。评论者姓名和个人资料属于个人数据,而定价数据集并不需要它们。这是一般信息,并非法律建议:请参阅 网页抓取是否合法。
常见问题
是什么让家具商品目录难以抓取?
变体激增。一个产品页面包含许多颜色、尺寸和材质组合,每种都有各自的价格和库存,因此存储页面层级的价格会产生在产品之间及零售商之间都不一致的数字。
为什么配送在这个品类中如此重要?
因为家具体积庞大,配送占总成本的很大比例,而且配送选项本身会在路边交付、送至指定房间和组装之间有所不同。标价较低的商品送达后可能更贵。
我需要按邮政编码采集吗?
需要,如果数据旨在反映客户实际支付的金额。配送费用和可售性取决于目的地,因此全国价格在这里是虚构的,没有邮政编码的序列会混合不同地区。
如何在不同零售商之间匹配同一产品?
在已公开时使用制造商零件号,在一致时使用品牌加型号名称,并以尺寸和材质作为确认信号。零售商刻意使用专属命名,因此跨零售商匹配带有置信度,而不是干净的连接结果。
一次价格观察足够吗?
不够。此品类的促销持续进行,因此单次快照无法支持关于某零售商定价的主张。应反复采样,并始终报告数据覆盖的时间窗口。
