🎯 一款可定制、具备反检测功能的云浏览器,由自主研发的 Chromium驱动,专为网页爬虫AI 代理设计。👉立即试用
返回博客

亚马逊Alexa抓取API:结构化的Alexa购物答案

Emily Chen
Emily Chen

Advanced Data Extraction Specialist

15-Jul-2026

TL;DR:

  • 亚马逊Alexa爬虫是无抓取的LLM聊天爬虫演员(scraper.alexa,将Alexa购物问题转化为结构化的JSON格式。
  • 一个经过身份验证的POST请求至/api/v2/scraper/execute,带有promptcountry,将返回答案以及Alexa推荐的产品——无需浏览器自动化或应用程序反向工程。
  • 你将获得查询、以Markdown和纯文本格式的答案、包含价格、评分、交付和ASIN的products数组、用于后续跟进的对话ID,以及可选的参考和建议。
  • 字段可为空,且根据查询而异: referencessourcessuggestions可能为空,价格以显示字符串形式返回,因此应谨慎解析。
  • **免费开始。**新的无抓取账户包括免费的爬虫API积分——请在app.scrapeless.com注册。

亚马逊Alexa现在以人们提问的方式回答购物问题——“300美元以下最佳降噪耳机”——并回复一份书面推荐和一组可购买的产品。这使得Alexa成为一个数据源:它列出的产品、显示的价格以及排名的顺序都是值得跟踪的信号。本指南展示如何使用无抓取的爬虫API捕获Alexa的答案作为结构化数据,响应包含什么,以及哪些字段需要小心处理。下面的每个请求和字段均来自该演员的实时运行。

使用亚马逊Alexa爬虫可以做什么

该演员接受自然语言的购物提示和目标国家,并将Alexa的答案返回为JSON。实际上,这使你可以:

  • 跟踪产品推荐——捕获Alexa为类别查询命名的产品,及其ASIN、价格和评分,并观察这些产品集合随时间的变化。
  • 跨区域比较——发送相同的提示与不同的country,查看Alexa的选择如何随着市场的变化而变化。
  • 监测AI购物可见性——测量你的产品或竞争对手的产品是否出现在Alexa的答案中,以满足你所关注的查询。
  • 为下游系统提供数据——将结构化答案直接导入仪表板、电子表格或警报,而无需自己抓取Alexa应用。

为什么选择无抓取的Alexa演员

Alexa的购物答案是在应用程序后生成的,并不是以公共网页的形式提供给你请求。无抓取演员负责收集并返回一个干净的、开发者友好的封装,因此你的代码发送提示并读取字段,而不是驱动应用程序、旋转基础设施或维护选择器。Alexa是LLM聊天爬虫家族的一员,这意味着你在此处使用的请求结构同样适用于其他回答引擎——你只需更改actor值,其余保持不变。

端点和参数

该演员在同步爬虫API端点上运行。使用x-api-token头中的API令牌进行身份验证。

  • 端点: POST https://api.scrapeless.com/api/v2/scraper/execute
  • 演员: scraper.alexa
输入字段 类型 必填 描述
prompt 字符串 发送给Alexa的购物问题。
country 字符串 目标国家代码,例如US

响应以task_result对象的形式同步返回;你无需轮询。从无抓取仪表板获取你的令牌。

经过身份验证的请求

一个最小的请求看起来像这样(仅供参考——请替换令牌):

bash Copy
curl 'https://api.scrapeless.com/api/v2/scraper/execute' \
  --header 'Content-Type: application/json' \
  --header 'x-api-token: YOUR_API_TOKEN' \
  --data '{
    "actor": "scraper.alexa",
    "input": {
      "prompt": "300美元以下最佳降噪耳机",
      "country": "US"
    }
  }'

Python集成

这个例子从SCRAPELESS_API_KEY环境变量中读取令牌,发送请求,并打印答案和推荐的产品。它仅使用Python标准库。

python Copy
import json
import os
import urllib.request

API_URL = "https://api.scrapeless.com/api/v2/scraper/execute"
API_TOKEN = os.environ["SCRAPELESS_API_KEY"]

payload = {
    "actor": "scraper.alexa",
    "input": {
        "prompt": "300美元以下最佳降噪耳机",
        "country": "US",
    },
}

request = urllib.request.Request(
    API_URL,
    data=json.dumps(payload).encode("utf-8"),
    headers={"Content-Type": "application/json", "x-api-token": API_TOKEN},
    method="POST",
)

with urllib.request.urlopen(request, timeout=180) as response:
python Copy
data = json.loads(response.read().decode("utf-8"))

result = data.get("task_result", {})
print("状态:", data.get("status"))
print("查询:", result.get("user_text"))
print("返回的产品数量:", len(result.get("products") or []))

for product in (result.get("products") or [])[:3]:
    print("-", product.get("title"))
    print("   价格:", product.get("price"), "| 评分:", product.get("rating"))
    print("   asin:", product.get("product_id"))

您得到的返回结果

答案在 task_result 中。以下字段是您将最常使用的;值是来自实时运行的示例,已修剪以缩短长度。

json Copy
// 来自live scraper.alexa运行的示例——字段名称是真实的,值已修剪。
{
  "status": "成功",
  "task_id": "1ba323ef-1bee-446c-9a80-090cb9c67231",
  "task_result": {
    "user_text": "300美元以下最佳降噪耳机",
    "md_text": "**高端降噪耳机** ...",
    "raw_text": "**高端降噪耳机** {cite_product_1} ...",
    "completed": true,
    "conversation": { "id": "amzn1.conversation.866ba539-..." },
    "products": [
      {
        "citation_id": "cite_product_1",
        "product_id": "B09XS7JWHH",
        "title": "索尼高端降噪耳机,30小时电池,Alexa语音控制",
        "price": "~~$399.99~~ $248.00",
        "rating": "{rating 4.2} 19,796条评论",
        "delivery": "7月15日送达",
        "image_url": "<产品图片URL>",
        "url": "<dl.amazon.com 解析为 /dp/B09XS7JWHH>"
      }
    ],
    "references": [],
    "sources": [],
    "suggestions": [],
    "directives": []
  }
}
字段 类型 描述
user_text 字符串 购物问题,Alexa接收到的内容。
md_text 字符串 Alexa的答案,采用Markdown/HTML格式,包括内联产品卡片。
raw_text 字符串 答案的纯文本格式,包含 {cite_product_N} 引用标记。
completed 布尔值 答案生成是否完成。
conversation 对象 可用于后续提示的对话 id
products 数组 推荐产品:product_id(ASIN),titlepriceratingdeliveryimage_urlurlcitation_id
references 数组 答案背后的引用——可能为空。
sources 数组 支持链接——可能为空。
suggestions 数组 Alexa提供的后续提示——可能为空。
directives 数组 交互中的处理指令。

常见数据结构问题

一些字段需要防御性解析:

  • user_text 是查询,而不是答案。 答案位于 md_text(丰富)和 raw_text(纯文本)中。如果您想要书面推荐,请查看这些字段。
  • 价格是显示字符串,而不是数字。 折扣商品的返回格式为 ~~$399.99~~ $248.00,其中划掉的值是标价,后者是当前价格。解析数字,而不是直接转换字段。
  • rating 是格式化字符串。 它的格式为 {rating 4.2} 19,796条评论,因此使用小正则表达式提取分数和评论数,而不是期望浮点数。
  • 空数组是正常的。 referencessourcessuggestions 都可以根据查询为空,因此在迭代前应防范 None[]
  • 产品网址是重定向。 url 是一个 dl.amazon.com/redirect 链接,解析到产品的 /dp/<ASIN> 页面;当您需要规范的 ASIN 时,请使用 product_id

伴随角色

由于 Alexa 是 LLM Chat Scraper 族的一部分,因此相同的请求模式适用于其他答案引擎——将 scraper.alexa 替换为 scraper.chatgptscraper.geminiscraper.perplexity 等。Scrapeless 还发布了一个开源的 Alexa 爬虫示例库,提供五种语言的可运行代码,如果您想要 Python 以外的起始点。有关共享相同请求结构的其他答案引擎,请参见 ChatGPT 爬虫 API 指南

结论

亚马逊 Alexa 爬虫将对话购物答案转换为结构化的 JSON,只需一次经过身份验证的请求:发送提示和国家,读取回答文本和产品数组,包含 ASIN、价格、评分和交付信息。将价格和评分视为字符串,预期某些数组为空,您就有一个可靠的源,以跟踪 Alexa 如何在不同查询和地区推荐产品。亚马逊为开发者提供了 Alexa 开发者文档,而 亚马逊设备新闻办公室 则介绍了助理的发展动态。
准备好将Alexa的答案捕获为数据了吗?从Scrapeless仪表板免费开始,查看该角色在抓取API产品页面的位置,或在Scrapeless定价页面比较计划。

常见问题解答

问:什么是亚马逊Alexa抓取器?
答:这是一个Scrapeless LLM聊天抓取器角色(scraper.alexa),它向亚马逊Alexa发送购物提示,并以结构化JSON返回答案——查询、以Markdown和纯文本格式的答案,以及一个包含ASIN、价格、评分和交付的信息的products数组。

问:它使用哪个端点和参数?
答:POST https://api.scrapeless.com/api/v2/scraper/execute,其中actor设置为scraper.alexainput对象包含promptcountry。使用你的令牌在x-api-token头中进行身份验证。

问:响应是同步的吗?
答:是的。结果在同一响应的task_result对象中返回,因此您不需要轮询另一个结果端点。

问:我需要浏览器或代理池吗?
答:不需要。Scrapeless在API后面运行抓取,因此您的应用程序只需发送请求并解析返回的JSON。

问:为什么referencessourcessuggestions有时是空的?
答:这些字段取决于查询。一个简单的类别提示可能返回没有单独引用或后续建议的产品,因此在迭代之前,请将数组视为可选,并进行保护。

问:我如何读取价格和评分?
答:两者都是展示字符串。价格的格式类似于~~$399.99~~ $248.00(划掉的标价,当前价格在后),评分格式类似于{rating 4.2} 19,796 Reviews。使用小解析器提取数字,而不是直接转换字段。

问:我可以在其他AI助手上使用相同的代码吗?
答:可以。Alexa与其他引擎共享LLM聊天抓取器的请求形态,因此将scraper.alexa替换为scraper.chatgptscraper.geminiscraper.perplexity可以重用相同的集成。

在Scrapeless,我们仅访问公开可用的数据,并严格遵循适用的法律、法规和网站隐私政策。本博客中的内容仅供演示之用,不涉及任何非法或侵权活动。我们对使用本博客或第三方链接中的信息不做任何保证,并免除所有责任。在进行任何抓取活动之前,请咨询您的法律顾问,并审查目标网站的服务条款或获取必要的许可。

最受欢迎的文章

目录