KB-AMAZON-001:Amazon US 产品详情与父子 ASIN 采集
平台与场景、验证结论、使用步骤及适用边界。
本页目录
| 项目 | 内容 |
|---|---|
| 平台/站点 | Amazon 美国站 www.amazon.com |
| 页面 | 商品详情页 /dp/{ASIN}、/gp/product/{ASIN} |
| 对应 Tool | amazon_collect_product_detail |
| 对应脚本 | amazon-product-detail-collector.user.js 1.0.0 |
| 字段 | 父/子 ASIN、当前变体、标题、品牌、卖点、描述、价格、评分、Review、排名、Coupon、库存/配送/退货提示、图片、A+、概览和详情 |
| 整理日期 | 2026-09-14 |
| 当前证据等级 | 真实 Amazon 页面选择器与 twister 数据 + 脱敏快照 + 合成 DOM/生成脚本测试;真实飞书写入尚未实测 |
1. 不能越过的证据边界
仓库样本位于 tests/fixtures/amazon-us-product-detail/:合成脱敏样本明确标为 static_fixture_only;live-variant-2026-09-12.json 来自真实浏览器页面,只保留字段相关 selector 快照和变体切换值,不含账号、Cookie 或完整 DOM。
真实验证仍不能证明 Amazon 所有账号、地区和 A/B 页面都采用相同 DOM。脚本只返回页面当前明确披露的字段;缺失值用 null、空数组或空对象表示,不用 0 或猜测值补齐。
2. 字段语义与提取顺序
当前选中变体 ASIN
优先读取变体区被选中节点的 data-defaultasin 或 data-csa-c-asin,再回退到 input#ASIN / #ASIN 的值,最后从 /dp/ 或 /gp/product/ URL 提取。只接受 10 位字母数字。
“当前选中”不能简单等同于初始 URL ASIN;切换变体后 DOM 属性优先级高于 URL。Tool 若收到期望 ASIN且与当前结果不一致,必须报错,不能返回另一个变体。
标题
优先读取 #productTitle,回退到 meta[property="og:title"]。合并空白并保留可见文本;没有标题时页面不满足最小商品证据,任务失败。
价格和币种
只在核心购买区的价格节点中按保守顺序查找,不使用全页 .a-price,以免误取推荐商品价格。真实页面表明 www.amazon.com 会随配送/币种偏好显示 CNY308.45,切换变体后可显示 $39.99;因此不能把美国站硬编码成 USD。解析器按页面明确的 USD/CNY/CAD/AUD/EUR/GBP/JPY/INR 代码返回币种,明确 $ / US$ 时返回 USD。
页面无报价、价格节点缺失或文本没有明确币种标记时,price 和 currency 返回 null,同时列入 missing_fields;不得返回 0。0 是真实数值,不是缺失值替代品。
父 ASIN、子 ASIN 与变体属性
解析器只从商品页 twister-js-init-dpx-data 中的 parentAsin、currentAsin、dimensions、variationDisplayLabels 和 dimensionValuesDisplayData 读取父子关系。返回的 variations 包含子 ASIN、Size/Color 等属性和当前选中状态;页面未披露完整关系时不猜测。
父页的 twister 数据能列出子 ASIN 和变体属性,但不能证明每个子 ASIN 自己的标题、卖点、图片和价格。如果用户要“每个 ASIN 的页面信息”,应先运行一次取得 variations[].asin,再由 SellerFeeds 批量展开,让每个子 ASIN 独立运行同一 Tool。这样每行都有自己的页面证据,也能控制请求数和续跑范围。
其他页面字段
- 品牌来自 byline、商品概览或详情表。
- 卖点来自
About this item列表;商品描述、A+ 文字和 A+ 图片分开返回。 - 评分、Review/Rating 数量、Best Sellers Rank、Coupon、库存文案、配送信息和高退货提示都是当次页面快照,不是历史数据。
- 主图优先取
data-old-hires或动态图片元数据中的高分辨率 URL;附图和 A+ 图片去重后返回。 product_overview和product_details保留页面键值表,因商品类目不同,键名是动态的。
飞书回传和机器人通知
飞书不是采集必要条件。baseUrl 和 baseToken 都留空时只返回采集结果,不请求飞书;只填一项时在采集前拒绝;两项完整时每个实际采集的 ASIN 追加一行,并在权限允许时自动创建缺失文本列。
成功写表且有有效 table_url 时,飞书机器人发送报告文件,摘要可附带多维表格链接。写入失败时返回 output_error,保留采集结果;任务中心和 MCP 的 JSON、Excel、Markdown 下载不受影响。
3. 页面状态与等待
page Tool 初次解析缺少 ASIN/标题时,使用 MutationObserver 最多等待 10 秒;页面卡片对变体相关 DOM 变化做 180ms 防抖刷新。出现标题 Robot Check、#captchacharacters 或验证表单时标记 challenge 并失败。
下列情况当前不保证:地区配送或登录弹窗遮挡、优惠券后的到手价、Subscribe & Save、Deal 多价格、二手/多卖家报价、逗号小数等本地化数字格式、Amazon A/B 新布局。遇到这些页面需补充证据后扩展解析器。
4. 已复现结果
- 选中变体样本:从变体属性得到
B0VARI2345,标题为Sample USB-C Hub,价格29.99,币种USD。 - 缺失价格样本:ASIN 和标题可用,价格与币种为
null,missing_fields包含两项。 - Robot Check 样本:抛出
AMAZON_CHALLENGE,不作为商品结果。 - 页面助手源码测试:复制处理器中没有飞书函数;Tool 的关闭分支位于读取飞书配置和写入之前;包含重复挂载清理与 observer 断开。
- 真实页面:
B07NHW8Z3N选择 Black Pack 后,URL 与input#ASIN更新为B08GJ8MW12;核心价格节点更新为$39.99。此前初始选择价格为CNY308.45,证明币种需读取页面而非按站点猜测。 - 2026-09-14 真实页面:
B0D9VTFCBK的 twister 数据披露父 ASINB0D9VVS7RG、Size/Color 维度和 243 个子体;另一真实商品页可见标题、About this item、主图、概览和详情区。这只证明当时页面结构,不是 Amazon 公开 API 承诺。
运行 node --test tests/amazon-product-detail.test.mjs 可复现解析断言。真实浏览器验证截图保存在本地 output/playwright/amazon-us-variant-b08gj8mw12-2026-09-12.png;测试中的 live selector 快照可随 Git 追溯。该实测仅证明上述字段和一次变体切换,不等同于扩展端到端安装验收。
5. 实际页面需要补充什么
对未覆盖或改版页面,请提供可公开使用的 URL、站点/地区、登录状态、当前变体、脱敏的商品区 DOM 或页面诊断,以及人工看到的预期字段。不要提供 Cookie、登录凭据、PersonalBaseToken 或订单隐私数据。
