亚马逊Alexa抓取API:结构化的Alexa购物答案
Advanced Data Extraction Specialist
TL;DR:
- 亚马逊Alexa爬虫是无抓取的LLM聊天爬虫演员(
scraper.alexa),将Alexa购物问题转化为结构化的JSON格式。 - 一个经过身份验证的
POST请求至/api/v2/scraper/execute,带有prompt和country,将返回答案以及Alexa推荐的产品——无需浏览器自动化或应用程序反向工程。 - 你将获得查询、以Markdown和纯文本格式的答案、包含价格、评分、交付和ASIN的
products数组、用于后续跟进的对话ID,以及可选的参考和建议。 - 字段可为空,且根据查询而异:
references、sources和suggestions可能为空,价格以显示字符串形式返回,因此应谨慎解析。 - **免费开始。**新的无抓取账户包括免费的爬虫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
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
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
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
// 来自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),title,price,rating,delivery,image_url,url,citation_id。 |
references |
数组 | 答案背后的引用——可能为空。 |
sources |
数组 | 支持链接——可能为空。 |
suggestions |
数组 | Alexa提供的后续提示——可能为空。 |
directives |
数组 | 交互中的处理指令。 |
常见数据结构问题
一些字段需要防御性解析:
user_text是查询,而不是答案。 答案位于md_text(丰富)和raw_text(纯文本)中。如果您想要书面推荐,请查看这些字段。- 价格是显示字符串,而不是数字。 折扣商品的返回格式为
~~$399.99~~ $248.00,其中划掉的值是标价,后者是当前价格。解析数字,而不是直接转换字段。 rating是格式化字符串。 它的格式为{rating 4.2} 19,796条评论,因此使用小正则表达式提取分数和评论数,而不是期望浮点数。- 空数组是正常的。
references、sources和suggestions都可以根据查询为空,因此在迭代前应防范None和[]。 - 产品网址是重定向。
url是一个dl.amazon.com/redirect链接,解析到产品的/dp/<ASIN>页面;当您需要规范的 ASIN 时,请使用product_id。
伴随角色
由于 Alexa 是 LLM Chat Scraper 族的一部分,因此相同的请求模式适用于其他答案引擎——将 scraper.alexa 替换为 scraper.chatgpt、scraper.gemini、scraper.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.alexa,input对象包含prompt和country。使用你的令牌在x-api-token头中进行身份验证。
问:响应是同步的吗?
答:是的。结果在同一响应的task_result对象中返回,因此您不需要轮询另一个结果端点。
问:我需要浏览器或代理池吗?
答:不需要。Scrapeless在API后面运行抓取,因此您的应用程序只需发送请求并解析返回的JSON。
问:为什么references、sources或suggestions有时是空的?
答:这些字段取决于查询。一个简单的类别提示可能返回没有单独引用或后续建议的产品,因此在迭代之前,请将数组视为可选,并进行保护。
问:我如何读取价格和评分?
答:两者都是展示字符串。价格的格式类似于~~$399.99~~ $248.00(划掉的标价,当前价格在后),评分格式类似于{rating 4.2} 19,796 Reviews。使用小解析器提取数字,而不是直接转换字段。
问:我可以在其他AI助手上使用相同的代码吗?
答:可以。Alexa与其他引擎共享LLM聊天抓取器的请求形态,因此将scraper.alexa替换为scraper.chatgpt、scraper.gemini或scraper.perplexity可以重用相同的集成。
在Scrapeless,我们仅访问公开可用的数据,并严格遵循适用的法律、法规和网站隐私政策。本博客中的内容仅供演示之用,不涉及任何非法或侵权活动。我们对使用本博客或第三方链接中的信息不做任何保证,并免除所有责任。在进行任何抓取活动之前,请咨询您的法律顾问,并审查目标网站的服务条款或获取必要的许可。



