关键要点:

  • 动态渲染,而非原始 HTML。 亚马逊产品详情页面、搜索结果和评论在客户端进行加载——Scrapeless Agent Browser 在真正的云浏览器中进行渲染。特别是在亚马逊上,wait --load networkidle 并不可靠(懒加载的广告/信标流持续触发);使用 wait 1500 然后 wait '<稳定选择器>'(例如,在产品详情页使用 #productTitle,在 /s 页面使用 [data-asin]:not([data-asin=""]))。
  • 每会话地理路由。 --proxy-country--proxy-state--proxy-city--timezone 和 --languages 保持每个请求在 .com.co.uk.de 和 .co.jp 之间的一致区域设置。
  • 发现 → 提取流程。 亚马逊在 A/B 变体之间轮换类名和属性钩子。在编写选择器之前,使用 get html 读取 DOM,然后使用 eval 提取——决不要在发布代码中硬编码类名。
  • 每个逻辑操作一个新会话。 在实践中,Scrapeless 会话在 2-3 次连续的加载页面提取中保持干净。超过这个次数,它们可能开始返回 chrome://new-tab-page 或静默终止。每个页面或小批量生成新会话,而不是重用一个长久的会话进行 20 次以上请求。

引言

亚马逊是开放网络上单一最大的产品数据来源:价格情报、评论挖掘、畅销商品排名监控、最低广告价格合规以及品牌保护都源自同一公共列表页面。官方产品广告 API 有严格的批准周期,并且不公开评论正文、畅销商品排名时间序列或竞争对手卖家的数据——因此大多数严谨的亚马逊数据管道仍然依赖抓取。

现代亚马逊抓取程序必须同时处理几个现实问题:页面在 JavaScript 中加载,类名在 A/B 变体中轮换,cookies 和地区状态需要在分页请求中保持一致,基于 IP 声誉的过滤对数据中心出口的限制很严格。在一个原始的 HTTP 客户端上处理这四个问题——或在本地安装的 Playwright 上——会增加数周的维护工作,没有人愿意承担。

本指南演示了基于 Scrapeless Agent Browser 的终端优先工作流程,处理那些通常需要数周的部分:反检测指纹、住宅代理、动态渲染和跨市场领域一致性——这一切都通过一个 scrapeless-scraping-browser CLI 实现。


你可以用它做什么

  • 动态竞争定价。 实时跟踪 .com 上竞争对手的 ASIN 价格,将信号输入到重新定价规则中,并监控促销窗口,无需运行本地浏览器。
  • 最低广告价格合规监控。 扫描零售商列表和第三方卖方报价,与您制造商设定的最低广告价格进行对比,识别违反情况。
  • 产品详情页评论信号。 聚合每个产品详情页上显示的顶级评论(每个 ASIN 通过第 3 步提取 5-10 条评论)——足以进行趋势检测和声誉监控。2026年,跨 /product-reviews/* 的全语料库评论挖掘需要经过身份验证的会话;请参见第 5 步。
  • 库存和可用性跟踪。 监控缺货、Prime 资格变更和发货时间变化,以预测供应链压力。
  • 畅销商品排名和排名智能。 提取各类和子类的畅销商品排名,用于市场规模、发布跟踪和类别份额分析。
  • 品牌保护。 检测伪造列表、未经授权的第三方卖家和商标侵权情况。

Scrapeless Agent Browser的功能

Scrapeless Agent Browser 是一个可定制的、反检测的云浏览器,专为网页爬虫和 AI 代理设计。针对亚马逊,它提供:

  • 在 195+ 个国家的住宅代理--proxy-country--proxy-state--proxy-city),用于区域匹配的出口——这是躲避亚马逊反机器人中介的基本要素。
  • 每个会话的反检测指纹,确保页面的呈现与自然流量相同。
  • 会话持久性,通过 --session-id 实现跨分页请求,这样 cookie、购物车和 Prime 上下文在页面间保持一致。
  • 云浏览器中的 JavaScript 渲染,确保价格块、可用性横幅、懒加载评论正文和 A+ 内容的 DOM 被正确加载。
  • 每会话的区域一致性——--timezone 和 --languages 根据所选代理地理位置自动对齐。

先决条件

  • Node.js 18 或更高版本。
  • 一个 Scrapeless 帐户和 API 密钥 — 请搜索scrapeless官网进行注册。
  • jq(可选,适用于 shell 脚本中的 JSON 解析 — 下面显示了一个便携式 grep 后备)。
  • 对终端的基本熟悉。

安装

下面的操作在 scrapeless-scraping-browser CLI 上运行。设置分为三个步骤 — CLI 用户和 AI 代理用户都需要步骤 #1 和 #2;AI 代理用户还需要步骤 #3。

1. 安装 CLI 包

npm install -g scrapeless-scraping-browser

这会提供每一步指南调用的 scrapeless-scraping-browser 二进制文件。该技能不带有自己的运行时 — 它将命令模式加载到您的 AI 代理中,但必须先安装 CLI。

2. 配置您的 API 密钥

从 scrapeless.com 获取您的令牌,然后将其存储在 CLI 可以读取的位置:

scrapeless-scraping-browser config set apiKey your_api_token_here
scrapeless-scraping-browser config get apiKey   # 验证

使用 AI 代理? 该技能的说明明确告诉您的代理在任何会话调用之前需要进行身份验证。如果在代理首次尝试使用 CLI 时未设置 API 密钥,代理将提示您并为您运行 config set apiKey … 命令 — 您可以现在手动设置(上面的命令)或在代理询问时粘贴您的令牌。

配置文件位于 ~/.scrapeless/config.json,仅限当前用户访问,优先于环境变量,并且可以在代理和 CI 运行器之间移植。对于 CI 管道,建议使用:

export SCRAPELESS_API_KEY=your_api_token_here

3. 在您的 AI 代理中安装 Scrapeless 技能

这是与上述步骤 1 不同的步骤。步骤 1 安装的是 CLI 二进制文件 — 您的代理所调用的运行时。技能则是教您代理如何正确调用它(选择器、等待、重试模式、发现→提取工作流程)。这两者是不同的,您需要同时具备。

该技能是一个包含 SKILL.md + skill.json + references/ 的文件夹。规范来源是 scrapeless-ai/scrapeless-agent-browser → skills/scraping-browser-skill GitHub 仓库。

要在 Claude Code、Cursor、VS Code + GitHub Copilot、OpenAI Codex CLI 或 Gemini CLI 中安装它,请按照 Scrapeless AI Agent 安装指南操作 — 它提供每个代理的复制粘贴命令(bash 和 Windows PowerShell)。安装后重载您的代理以使技能生效。

如果没有安装技能,您的代理将不了解发现→提取模式、每个引擎的等待时间或真正有效的选择器,并且您必须在每个提示中逐个提供每个细节。

技能在您的代理操作上下文中预加载的内容:

  • 身份验证 — 检查 ~/.scrapeless/config.json 或 SCRAPELESS_API_KEY,如果缺失则提示您设置(见步骤 2)。
  • 发现 → 提取工作流程 — 反脆弱模式。代理首先通过 get html "<region>" 读取实时 DOM,识别稳定锚点(data-* 属性,aria-labelrole,语义 ID),然后根据真实渲染内容编写 eval 选择器 — 而不是猜测在 A/B 变体中轮换的实用程序类名,这些类名在几周内就会失效。
  • 选择器语法 — 何时使用 CSS 选择器(#productTitle[data-asin])与可访问性引用(@e1 从 snapshot -i)。
  • 等待注意事项 — 在 open 和 wait --load networkidle 之间使用 wait 1500 来避免冷会话 chrome://new-tab-page 竞争;在网络空闲无法解决时,对目标页面元素使用 wait <selector>
  • 并行 CLI 工作者 — 单壳 && 链接,唯一会话名称,每个主机 ≤3 个并发工作者。仅使用 --session-id 在守护进程争用下是不够的。
  • 常见陷阱 — eval 返回 JSON 引号值("49.99" 而不是 49.99),open 在成功导航时返回非零状态,当连接关闭时会话终止。
  • 完整命令参考 — 每个标志对应于 new-sessionopenwaitevalgetclickfillsnapshotauthprofilerecordingstop 等。

4. 验证技能已连接

在第一次真正的亚马逊抓取之前,使用一个安全的提示对您的代理进行烟雾测试:

“使用 Scrapeless 技能,打开 https://example.com 并告诉我页面标题。”

您的代理应该生成一个 Scrapeless 会话,导航并回复 “示例域”。如果您看到这两个词,说明技能已加载,API 密钥已设置,云浏览器可访问——您准备好抓取亚马逊了。

如果失败:

症状可能原因修复
“我没有工具/技能可以做到这一点”此代理会话中未加载技能通过 技能安装指南 重新安装并重新加载代理
身份验证失败 / 401API 密钥未设置重新运行 scrapeless-scraping-browser config set apiKey <token>(安装步骤 2)
未找到命令CLI 二进制文件在 PATH 中缺失重新运行安装步骤 1 (npm install -g scrapeless-scraping-browser)
挂起 / 落在 chrome://new-tab-page/冷会话等待竞争要求代理重试 — 技能知道在 open 和 wait --load networkidle 之间插入 wait 1500
亚马逊上的 page.goto: 超过 25000ms 的超时(但 example.com 可以工作)Scrapeless ↔ 亚马逊住宅代理 CAPTCHA 压力在不同的代理国家重试 (--proxy-country GB/CA/DE);长期使用,切换到Amazon scraping API方案

如何实际使用:提示您的代理

安装后,您通过 与代理对话 来抓取亚马逊——而不是通过复制粘贴 bash。技能将选择器、等待、重试分类器以及发现→提取模式加载到代理的上下文中,因此一句自然语言提示足以获取结构化的 JSON 返回。

可粘贴的提示

SymptomLikely causeFix
"I don't have a tool/skill to do that"Skill not loaded in this agent sessionReinstall via the skill install guide and reload the agent
Authentication failed / 401API key not setRe-run scrapeless-scraping-browser config set apiKey <token> (Install step 2)
command not foundCLI binary missing on PATHRe-run Install step 1 (npm install -g scrapeless-scraping-browser)
Hangs / lands on chrome://new-tab-page/Cold-session wait raceAsk the agent to retry — the skill knows to insert wait 1500 between open and wait --load networkidle
page.goto: Timeout 25000ms exceeded on Amazon (but example.com works)Scrapeless ↔ Amazon residential-proxy CAPTCHA pressureRetry on a different proxy country (--proxy-country GB/CA/DE); for sustained use, switch to the Scrapeless Amazon scraping API solution

示例:获取 ASIN B09B8V1LZ3 的完整产品卡(get the full product card for ASIN B09B8V1LZ3)

您输入:

“获取亚马逊 ASIN B09B8V1LZ3 的标题、价格、评级、评论数量和前 5 条评论。返回 JSON。”

“"Get the title, price, rating, review count, and top 5 reviews for Amazon ASIN B09B8V1LZ3. Return JSON."”

代理的计划(用简单英语):

  1. Mint a US-egress session (Amazon localizes by IP).
  2. Open https://www.amazon.com/dp/B09B8V1LZ3wait 1500, then wait '#productTitle' to dodge the cold-session race.
  3. Confirm anchors with get html "#centerCol" (handles Amazon's frequent layout swaps), then eval for #productTitle.a-price .a-offscreen#acrPopover[title]#acrCustomerReviewText, and [data-hook="review"] × 5.

您得到的响应(模式是规范 - JSON 形状;评论文本下面是一个说明性示例):

{
  "asin": "B09B8V1LZ3",
  "title": "Echo Dot (5th Gen, 2022 release) | Big vibrant sound...",
  "price": "$49.99",
  "rating": "4.7 out of 5 stars",
  "reviewCount": "191,146 ratings",
  "availability": "In Stock",
  "prime": true,
  "topReviews": [
    {
      // illustrative — actual review fields are populated from [data-hook="review"] × 5
      "author": "James M.",
      "rating": "5.0 out of 5 stars",
      "title": "Excellent voice quality, easy setup",
      "date": "Reviewed in the United States on March 14, 2026",
      "body": "Setup took two minutes. Voice recognition is noticeably sharper..."
    }
    // ... 4 more reviews with the same shape
  ]
}

这就是本次抓取操作面向用户的全部界面。下面的步骤 1-6 中的 bash 命令、选择器和等待指令是该技能控制代理运行的——您无需手动输入任何内容。

第 1 步 — 连接到 Scrapeless Agent 浏览器


创建美国出口(US-egress)会话。代理地理位置在浏览器打开任何页面之前设置,会话期间无法更改。

SESSION=$(scrapeless-scraping-browser new-session \
  --name "amazon-us" \
  --ttl 1800 \
  --recording true \
  --proxy-country US \
  --proxy-state CA \
  --proxy-city "Los Angeles" \
  --json | jq -r '.data.taskId')

echo "Session: $SESSION"

无需 jq 的便携式备用方案:

SESSION=$(scrapeless-scraping-browser new-session \
  --name "amazon-us" --ttl 1800 --recording true \
  --proxy-country US --proxy-state CA --proxy-city "Los Angeles" --json \
  | grep -oE '"taskId":"[^"]*"' | cut -d'"' -f4)

住宅代理分配有时会在首次尝试时返回临时 503 错误——请重试一次。分配延迟通常在美国为几秒钟,在人口较少的地区可能会更长;将每次运行的首次会话视为探测,如果未返回 taskId 则重试。

第 2 步 — 在编写选择器之前先了解 DOM

亚马逊会在 A/B 测试版本之间轮换类名、测试 ID 和组件属性。Scrapeless 模式是 “发现 → 提取” :首先读取实时 DOM,然后根据当前版本实际提供的内容构建选择器。

ASIN="B0XXXXXXXX"
scrapeless-scraping-browser --session-id $SESSION open "https://www.amazon.com/dp/$ASIN"
# Brief pause so `wait --load networkidle` doesn't resolve on the pre-warm
# chrome://new-tab-page/ before navigation commits.
scrapeless-scraping-browser --session-id $SESSION wait 1500
scrapeless-scraping-browser --session-id $SESSION wait --load networkidle

# Peek at the product-information region
scrapeless-scraping-browser --session-id $SESSION get html "div[id*='productTitle'], div[id*='centerCol']"

从返回的 HTML 中,识别出稳定的锚点:ASIN 位于卡片级别的 data-asin 属性中;价格位于 Price 标签旁边;库存信息位于特定区域下方;Prime 会员资格是一个带有角色标签的徽章。在提取步骤中,请使用这些模式,而不是实用程序类名。

第 3 步 — 提取核心 PDP 场

利用步骤 2 中发现的选择器,通过一次 eval 提取规范的 PDP 模式。基于角色和语义的锚点比实用类钩子更能适应布局重构。

scrapeless-scraping-browser --session-id $SESSION eval '
  (() => {
    const q = (sel) => document.querySelector(sel);
    const txt = (el) => el ? el.textContent.trim() : null;
    const num = (s) => s ? Number(s.replace(/[^\d.]/g, "")) : null;

    // Selectors below are examples — replace with anchors you discovered in Step 2
    const title = txt(q("#productTitle"));
    const priceText = txt(q("[data-a-color=\"price\"] .a-offscreen, .a-price .a-offscreen"));
    // Rating: aria-label on #acrPopover is the verified-stable surface in 2026
    const rating = num((q("#acrPopover") || {}).getAttribute?.("title"));
    const reviews = num(txt(q("#acrCustomerReviewText")));
    const availability = txt(q("#availability span"));
    const prime = !!q("[aria-label*=\"Prime\"]");
    const asinMatch = location.pathname.match(/\/(?:dp|gp\/product)\/([A-Z0-9]{10})/i);

    return JSON.stringify({
      asin: asinMatch ? asinMatch[1] : null,
      title, price: priceText, availability, rating, reviewCount: reviews,
      primeEligible: prime, url: location.href,
    });
  })()
'

对于更丰富的模式(例如产品特性、品牌、卖家、发货地、图片库、变体矩阵),请对每个区域重复“发现→提取”流程。

第 4 步 — 抓取带分页的类别搜索

亚马逊通过 &page=N 对搜索结果进行分页。单个查询的可访问有机深度大约为 20 页(~400 个项目)——这是一个结构性索引限制。为了获得更广泛的覆盖,按特征(品牌、价格区间、子类别)拆分查询,而不是超出限制。

QUERY="无线耳机"
for page in $(seq 1 20); do
  # 为每一页创建一个新会话——长时间会话重用在
  # ~3 次充水页面请求后会降低效能(默默返回 chrome://new-tab-page 或
  # 直接终止)。每页一个会话更可靠且容易并行化。
  SID=$(scrapeless-scraping-browser new-session --name "search-p$page" --ttl 300 \
    --json | jq -r '.data.taskId')

  URL="https://www.amazon.com/s?k=$QUERY&page=$page"
  scrapeless-scraping-browser --session-id $SID open "$URL"
  # networkidle 在 /s 上永远不会稳定,因为懒加载流;取而代之等待卡片
  scrapeless-scraping-browser --session-id $SID wait '[data-asin]:not([data-asin=""])'

  scrapeless-scraping-browser --session-id $SID eval "
    (() => {
      const cards = document.querySelectorAll('[data-asin]:not([data-asin=\"\"])');
      // 卡片数量变化 (~16–60,取决于视口、查询和 A/B 变种);
      // 发出每页的索引,让消费者从中计算绝对排名
      // 以及页码,而不是在这里假设固定的乘数。
      return JSON.stringify({
        query: '$QUERY', page: $page,
        results: [...cards].map((c, i) => ({
          pageIndex: i + 1,
          asin: c.getAttribute('data-asin'),
          title: c.querySelector('h2 span')?.textContent?.trim() || null,
          price: c.querySelector('.a-price .a-offscreen')?.textContent || null,
          // 评分:尝试多个星级小部件表面——亚马逊会轮换这些
          rating: parseFloat(
            c.querySelector('[aria-label*=\"out of 5 stars\"]')?.getAttribute('aria-label')
            || c.querySelector('i.a-icon-star span.a-icon-alt, i.a-icon-star-small span.a-icon-alt')?.textContent
            || ''
          ) || null,
          sponsored: c.querySelector('[data-component-type=\"sp-sponsored-result\"]') !== null || c.matches('[data-component-type=\"sp-sponsored-result\"]'),
          prime: !!c.querySelector('[aria-label*=\"Prime\"]'),
          url: c.querySelector('a.a-link-normal.s-underline-link-text')?.href || null,
        })),
      });
    })()
  " > "results-page-$page.json"

  scrapeless-scraping-browser stop $SID
done

每页一个新会话,而不是一个长期会话。 理论上,重用 --session-id 保留 cookies 和指纹;在实践中,Scrapeless 会话在 ~3 次充水页面请求后开始返回空白的 chrome://new-tab-page 或终止,因此可靠的模式是在每页创建一个短期会话并在结束时停止它。然后跨页面并行化非常简单——在后台工作线程中运行循环体而无需协调。

在页面 1-5 之间,ASIN 并非唯一(赞助的 ASIN 合法地重复——观察到 104 个唯一 / 274 个总计);在去重时不要假设跨页面的 ASIN 集是不相交的。

将并发保持在每主机 ≤ 3。 在同一本地守护进程上对相同页面进行 4 个或更多同时 CLI 调用会导致目标页面崩溃和“目标页面、上下文或浏览器在 eval 中途被关闭”错误。为了提高吞吐量,应该在多个主机(或多个用户帐户)之间进行分片,而不是在单个节点上增加并发。

正在运行并行工作者? 默认的 ~/.scrapeless-scraping-browser/ 守护进程在同一主机上的进程之间共享——多个工作者即使每个都传递自己的 --session-id 也可能劫持彼此的会话。什么实际有效:将一个作业的每个 CLI 调用链接成一个单一 shell && 调用(从守护进程的 POV 原子——其他工作者无法在你的步骤之间交错),使用唯一的会话名称(端口从名称哈希),并将每主机的并发限制在 3 个工作者左右。USERPROFILE/HOME 环境变量隔离在上游技能中有文档,但在我们的测试中并没有隔离 Windows 上的 Rust v0.1.1 二进制文件——为了更高的扇出,跨主机分片。有关完整模式,请参见 skill-dev/SKILL.md 的“并行 CLI 代理”。


第 5 步 — 关于评论和星级直方图的说明

在 2025 年,/product-reviews/<ASIN>/ 页面可匿名访问,星级过滤 × 页码的笛卡尔积使得完整的评论数据抓取变得简单。在 2026 年,亚马逊更改了入口:对评论 URL 的匿名请求在绝大多数情况下会重定向到 /ap/signin。产品详细页面上的评论轮播([data-hook="review"] 在主产品详细页面内)仍然可以匿名访问——这是在第 3 步提取中显示的前 5-10 条评论——但是每个星级过滤的深度遍历以及评论页面上的星级直方图需要经过身份验证的会话。

有两条实用的前进路径:

  • 使用产品详细页面上的前 评价(可在第 3 步提取中获得;无需额外导航)当每个 ASIN 的 5-10 条评论足够时——通常适用于声誉监控和趋势检测。
  • 对于完整的评论数据集,将抓取浏览器与经过身份验证的会话状态配对。auth save <name> 用于存储凭证,auth login <name> 用于重放它们,但每次新登录时仍会出现 MFA 提示——对没有 MFA 强制的亚马逊账户才实用。对于需要以大规模获取完整历史评论集的管道,Scrapeless Amazon 爬虫API 处理服务器端身份验证,因此调用者无需处理。

无论如何,在 2026 年别尝试匿名 /product-reviews/* 抓取——在前几个请求后,每个请求都会转到 /ap/signin,会话对评论工作实际上已无效。


第 6 步 — 关于跨市场快照的说明

ASIN 在全球范围内稳固——定价、可用性和卖家池在 .com.co.uk.de 和 .co.jp 之间存在差异——原则上,每个市场都有一个对齐的代理会话是自然模式。实际上,针对非美国市场的 US 路由会话经常会落在本地区域插页上(例如,amazon.es/dp/<ASIN> 返回西班牙语的“继续购物”页面——约 160 字节,没有 #productTitle,没有添加到购物车的标记——而不是产品详细页面)。当前,对非美国市场请求的最佳解决方案是Scrapeless Amazon 爬虫API ,它在服务器端处理市场路由。

具体来说,对于美国市场(.com),本指南的每一步都可以毫无地理标记地端到端工作。对于今天的多市场管道,请对非美国市场使用抓取 API,而对美国自定义流程工作使用抓取浏览器。


您将获得的回报

抓取浏览器会返回一个实时 DOM——提取模式是对调用者写入 eval 步骤的请求。对于从第 3 步的发现 → 提取模板进行的单个产品详细页面访问,当前可靠返回的字段如下所示:

// 模式是规范的;下面的字段值是最近捕获的示例,不是当前 B09B8V1LZ3 的静态快照。
{
  "asin": "B09B8V1LZ3",
  "title": "Echo Dot (第 5 代, 2022 年发布) | 大而清晰的声音...",
  "brand": "亚马逊",
  "final_price": "49.99",
  "availability": "有货",
  "rating": 4.7,
  "review_count": 191146,
  "prime_eligible": true,
  "amazon_choice": true,
  "bought_past_month": "过去一个月购买超过 10K",
  "features": [
    "任何房间的完美选择 – 清晰的声音...",
    "语音控制您的音乐 – 播放歌曲..."
  ],
  "image_url": "https://m.media-amazon.com/images/I/...",
  "images_count": 9,
  "delivery": "符合条件的订单免运费",
  "url": "https://www.amazon.com/dp/B09B8V1LZ3",
  "domain": "www.amazon.com"
}

关于此输出的一些诚实观察,值得在大规模运行之前了解:

  • 详细规格表受模板制约。 位于 #productDetails_detailBullets_sections1 / #detailBulletsWrapper_feature_div 内的字段——product_dimensionsitem_weightmodel_numbermanufacturerupcdate_first_availabledepartment——经常在亚马逊提供的 DOM 中缺失。不同的住宅 IP,或在 URL 后附加 ?language=en_US&m=ATVPDKIKX0DER,有时会显示完整模板。对于必须每次都存在的字段,Scrapeless Amazon 爬虫API  会在服务器端解决此问题。
  • 最佳销售排名(BSR)及其上级类别bs_rankbs_categoryroot_bs_rankroot_bs_categorysubcategory_rank)也属于同一详细规格块。相同的注意事项。
  • number_of_sellers 需要二次导航到 /gp/offer-listing/<ASIN>/,然后提取卖家行数。
  • **top_review**来源于PDP评论转盘([data-hook="review-body"])。2026年后,通往/product-reviews/<ASIN>/的后备路径不再支持匿名访问(见第5步)——依赖PDP转盘获取每个ASIN的5到10条顶级评论。
  • **parent_asin**需要扫描变体切换区域(#twister / #variation_*);仅在发货变体的产品上存在。

搜索页面快照返回一个结构化的结果数组:

{
  "query": "无线耳机",
  "page": 1,
  "results": [
    {
      "rank": 1, "asin": "B0XXXXXXXX", "title": "...",
      "price": "$79.99", "rating": 4.5, "review_count": 12034,
      "sponsored": false, "prime": true,
      "url": "https://www.amazon.com/dp/B0XXXXXXXX"
    }
  ]
}

需要完整的55字段架构吗?使用Amazon Scraper API

伴随产品——Scrapeless Amazon 爬虫API ——为任何ASIN返回预标准化的约55字段架构:parent_asinbuybox_prices{initial, final, unit, discount},每个祖类的完整BSR(root_bs_rankbs_ranksubcategory_rank),number_of_sellersseller_idproduct_details[{type, values}]top_reviewanswered_questionsvariations及其他——无需编写任何选择器或额外导航。

Scrapeless Scraping Browser(本指南)Scrapeless Amazon Scraper API
输出实时DOM; 由您编写eval预标准化JSON,约55个字段
选择器维护由调用者负责由Scrapeless维护
最佳选择登录视图、自定义字段、多步骤流程、区域限制页面、购物车自动化、逐变体导航高容量产品智能、MAP监控、定价调整器、结构化分析
标准化(is_availablebuybox_prices拆分,BSR祖类遍历)由调用者负责服务器端处理
作为最佳选择……需要 确切 的字段子集,或非PDP流程(购物车、稍后保存、愿望清单、订阅与保存)需要保证架构的典型Amazon产品对象

这两个产品共享相同的Scrapeless帐户和相同的住宅代理池。根据用例选择合适的工具;当数据管道需要两者时,它们可以无缝组成。

关于搜索卡片输出还有一些诚实的观察,值得在大规模运行之前了解:

  • currency字段通常可以从市场域推导,但并不总是在页面上直接显示——应从会话的市场上下文中导出,而不是解析价格字符串。
  • availability文本是本地化的;在下游使用之前,标准化为枚举(InStockOutOfStockBackOrderedLimitedStockUnavailable)。
  • 搜索结果卡片上的ratingreviewCount字段在全新列表中偶尔缺失;将其视为可空。

结论

大规模抓取Amazon不再只是获取HTML——它需要可靠的渲染、区域感知的会话以及能够承受频繁DOM变化和反机器人压力的工作流程。Scrapeless Scraping Browser以生产就绪的方式将这些元素结合在一起,使收集稳定的产品数据、评论和搜索结果变得更加容易,而无需维护脆弱的本地浏览器。

对于需要大规模简单结构化Amazon数据的团队,Scrapeless Amazon Scraper API是更好的选择。对于需要交互、自定义导航或浏览器级控制的工作流程,Scrapeless Scraping Browser为您提供了在真实网页上构建所需的灵活性和韧性。实际上,这两个产品的组合最佳:使用API进行标准化提取,使用浏览器处理复杂流程和边缘情况。


常见问题

Q1:为何使用Scrapeless Scraping Browser而不是常规抓取器或本地Playwright设置?
Amazon页面高度动态,且经常受到反机器人系统的保护。Scrapeless Scraping Browser将真实浏览器渲染、住宅代理、指纹保护和会话控制集中在一个地方,使其在生产抓取时更为可靠。

Q2:抓取Amazon需要代理吗?
是的。亚马逊的边缘对数据中心IP范围进行了严格筛选,并且来自单个IP的请求模式会迅速被限制。通过--proxy-country--proxy-state--proxy-city接入的住宅代理,能够产生稳定的采集率。

Q3: 这与亚马逊抓取API有何不同?
亚马逊抓取API返回结构化的JSON,适用于知名端点(ASIN查询、类目页面、搜索),而无需调用者渲染浏览器——非常适合希望拥有固定架构且无需提取逻辑的管道。当页面需要JavaScript渲染、导航序列重要(过滤器、下拉菜单、可展开部分)或需要跨分页请求的每会话cookie/指纹连续性时,Scrapeless抓取浏览器是合适的工具。

Q4: 支持哪些市场?
每个亚马逊市场域名都是一个普通的URL——.com.co.uk.de.fr.it.es.co.jp.com.au.in.com.mx.com.br,等等。将--proxy-country--timezone--languages与市场的来源区域对齐。在实践中(见第6步),美国市场在抓取浏览器上能够端到端地工作;非美国市场目前最好通过Scrapeless Amazon 爬虫API 进行处理,该API在服务器端处理市场路由。

Q5: 当亚马逊更改DOM时会发生什么?
发现→提取流是持久的解决方案:首先get html相关区域,识别稳定的锚点(ASIN数据属性、ARIA标签、基于语义角色的定位器),并用从当前DOM派生的选择器填充eval——而不是硬编码的类名。当页面重构时,发现步骤会自动适应。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐