亚马逊产品评论是客户情绪数据、产品改进信号和竞争情报的丰富来源。由于积极的机器人检测和验证码挑战,直接抓取亚马逊评论是不可靠的。 Scavio API 提供了一个评论端点,可返回任何 ASIN 的结构化评论数据,包括星级、评论标题、评论正文、评论者姓名、日期和经过验证的购买状态。本教程演示如何获取评论、按评级过滤以及准备用于情感分析的数据。
前置条件
- Python 3.8 或更高版本
- 请求已安装库
- Scavio API 密钥
- 用于获取评论的亚马逊 ASIN
操作指南
步骤 1: 获取产品 ASIN 的评论
使用操作评论和您的 ASIN 发布到 Scavio Amazon 端点。响应包括评论数组。
Python
def get_reviews(asin: str) -> list[dict]:
response = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"platform": "amazon", "query": asin, "marketplace": "US"}
)
response.raise_for_status()
return response.json().get("reviews", [])步骤 2: 按星级筛选
按评级对评论进行细分,以分别分析正面和负面反馈。
Python
def filter_by_stars(reviews: list[dict], stars: int) -> list[dict]:
return [r for r in reviews if r.get("rating") == stars]
negative = filter_by_stars(reviews, 1) + filter_by_stars(reviews, 2)
positive = filter_by_stars(reviews, 4) + filter_by_stars(reviews, 5)步骤 3: 提取 NLP 评论文本
构建评论机构列表,以输入到情感分析模型或主题提取管道。
Python
texts = [r["body"] for r in reviews if r.get("body")]
print(f"Collected {len(texts)} review texts for NLP")
print(texts[0][:200])步骤 4: 计算评分分布
按星级对评论进行计数,以了解产品的整体情绪分布。
Python
from collections import Counter
distribution = Counter(r.get("rating") for r in reviews)
for stars in sorted(distribution):
print(f"{stars} star: {distribution[stars]} reviews")Python 示例
Python
import os
from collections import Counter
import requests
API_KEY = os.environ.get("SCAVIO_API_KEY", "your_scavio_api_key")
ENDPOINT = "https://api.scavio.dev/api/v1/search"
def get_reviews(asin: str) -> list[dict]:
r = requests.post(ENDPOINT, headers={"x-api-key": API_KEY},
json={"platform": "amazon", "query": asin, "marketplace": "US"})
r.raise_for_status()
return r.json().get("reviews", [])
def summarize(reviews: list[dict]) -> None:
dist = Counter(r.get("rating") for r in reviews)
for stars in sorted(dist, reverse=True):
print(f"{stars}*: {dist[stars]} reviews")
texts = [r["body"] for r in reviews if r.get("body")]
print(f"\n{len(texts)} reviews with text available for NLP")
if __name__ == "__main__":
reviews = get_reviews("B09G9FPHY6")
summarize(reviews)JavaScript 示例
JavaScript
const API_KEY = process.env.SCAVIO_API_KEY || "your_scavio_api_key";
const ENDPOINT = "https://api.scavio.dev/api/v1/search";
async function getReviews(asin) {
const res = await fetch(ENDPOINT, {
method: "POST",
headers: { "x-api-key": API_KEY, "Content-Type": "application/json" },
body: JSON.stringify({ platform: "amazon", query: asin, marketplace: "US" })
});
const data = await res.json();
return data.reviews || [];
}
async function main() {
const reviews = await getReviews("B09G9FPHY6");
const dist = reviews.reduce((acc, r) => {
acc[r.rating] = (acc[r.rating] || 0) + 1; return acc;
}, {});
Object.entries(dist).sort().reverse().forEach(([s, c]) => console.log(`${s}*: ${c}`));
}
main().catch(console.error);预期输出
JSON
{
"reviews": [
{
"title": "Great sound quality",
"body": "The bass response is excellent and the ANC works well...",
"rating": 5,
"reviewer": "John D.",
"date": "2026-02-14",
"verified_purchase": true
},
{
"title": "Good but battery life could be better",
"body": "I love the comfort and sound but 20 hours isn't enough...",
"rating": 3,
"reviewer": "Sarah M.",
"date": "2026-01-28",
"verified_purchase": true
}
]
}