亚马逊获取商品评论的API接口

简介: 本文详细介绍如何通过亚马逊Product Advertising API(PAAPI)获取商品评论数据,涵盖API配置、认证签名、Python调用示例及响应解析。适用于开发价格比较、口碑分析等应用,强调合规使用与频率限制。


大家好!今天我将详细介绍如何通过亚马逊的API接口获取商品评论数据。作为一名开发人员,你可能需要这些数据来构建价格比较工具、分析产品口碑或开发推荐系统。亚马逊提供了Product Advertising API (PAAPI) 作为主要接口,支持获取商品信息,包括评论。但请注意,API有严格的使用限制(如频率限制和认证要求),开发者需遵守亚马逊的条款,避免滥用。下面我将逐步指导你完成整个过程,确保内容真实可靠。

  1. API概述
    亚马逊的Product Advertising API (PAAPI) 允许开发者通过RESTful请求获取商品数据。对于评论,PAAPI v5版本支持返回评论摘要、评分和链接,但无法直接获取所有原始评论内容(亚马逊为保护用户隐私,限制了详细数据的访问)。关键功能包括:

操作类型:使用GetItems或SearchItems操作,设置参数来请求评论数据。
响应格式:返回JSON数据,包含评论数、平均评分等。
限制:免费账户每天有少量调用配额(例如5000次),超出需付费;且必须通过认证(AWS签名)。
如果涉及分页计算(如处理大量评论),可用公式表示页数。设总评论数为$n$,每页显示$k$条评论,则总页数$p$为: $$ p = \left\lceil \frac{n}{k} \right\rceil $$ 其中$\lceil \cdot \rceil$表示向上取整函数。实际API调用中,需使用ItemPage参数控制分页。

  1. 前提条件
    在调用API前,需完成以下步骤:

注册开发者账户:
访问亚马逊开发者中心。
创建账户并登录,进入“Product Advertising API”控制台。
获取安全凭证:
生成Access Key ID和Secret Access Key(保存好,勿泄露)。
绑定AWS IAM角色(用于签名认证)。
了解API文档:
参考官方文档:PAAPI v5指南,重点查看ReviewInfo响应组。

  1. 调用API示例(Python代码)
    下面使用Python和requests库演示如何调用API获取商品评论。示例中,我们将获取商品ASIN(亚马逊标准识别号)为B08N5WRWNW(示例商品)的评论摘要。代码包括:

生成AWS签名(基于HMAC-SHA256)。
设置请求参数,如PartnerTag(你的联盟ID)和Resources(指定返回评论字段)。
处理JSON响应。
import requests
import datetime
import hmac
import hashlib
import urllib.parse

配置参数 - 替换为你的凭证

access_key = 'YOUR_ACCESS_KEY'
secret_key = 'YOUR_SECRET_KEY'
partner_tag = 'YOUR_PARTNER_TAG' # 联盟ID
region = 'us-east-1' # API区域
host = 'webservices.amazon.com'
endpoint = '/paapi5/getitems'

生成签名

def generate_signature():

# 生成时间戳和请求参数
amz_date = datetime.datetime.utcnow().strftime('%Y%m%dT%H%M%SZ')
params = {
    'Operation': 'GetItems',
    'ItemIds': ['B08N5WRWNW'],  # 商品ASIN
    'Resources': ['CustomerReviews.Count', 'CustomerReviews.StarRating'],  # 请求评论数据
    'PartnerTag': partner_tag,
    'PartnerType': 'Associates',
    'Marketplace': 'www.amazon.com'
}
# 构建规范请求
canonical_querystring = urllib.parse.urlencode(params, doseq=True)
canonical_request = f'POST\n{endpoint}\n\nhost:{host}\nx-amz-date:{amz_date}\n\nhost;x-amz-date\n{hashlib.sha256(canonical_querystring.encode()).hexdigest()}'
# 计算签名
string_to_sign = f'AWS4-HMAC-SHA256\n{amz_date}\n{datetime.datetime.utcnow().strftime("%Y%m%d")}/{region}/ProductAdvertisingAPI/aws4_request\n{hashlib.sha256(canonical_request.encode()).hexdigest()}'
signing_key = hmac.new(('AWS4' + secret_key).encode(), datetime.datetime.utcnow().strftime("%Y%m%d").encode(), hashlib.sha256).digest()
signing_key = hmac.new(signing_key, region.encode(), hashlib.sha256).digest()
signing_key = hmac.new(signing_key, 'ProductAdvertisingAPI'.encode(), hashlib.sha256).digest()
signing_key = hmac.new(signing_key, 'aws4_request'.encode(), hashlib.sha256).digest()
signature = hmac.new(signing_key, string_to_sign.encode(), hashlib.sha256).hexdigest()
return amz_date, signature, params

发送请求

def get_reviews():
amz_date, signature, params = generate_signature()
headers = {
'Host': host,
'X-Amz-Date': amz_date,
'Authorization': f'AWS4-HMAC-SHA256 Credential={access_key}/{datetime.datetime.utcnow().strftime("%Y%m%d")}/{region}/ProductAdvertisingAPI/aws4_request, SignedHeaders=host;x-amz-date, Signature={signature}',
'Content-Type': 'application/json'
}
url = f'https://{host}{endpoint}'
response = requests.post(url, headers=headers, json=params)
if response.status_code == 200:
return response.json()
else:
raise Exception(f'API调用失败: {response.status_code}, {response.text}')

主函数

if name == 'main':
data = get_reviews()
print("API响应数据:")
print(data)

  1. 解析响应数据
    API响应为JSON格式。关键字段在ItemsResult下:

CustomerReviews.Count:评论总数。
CustomerReviews.StarRating:平均星级(范围1-5)。
CustomerReviews.URL:评论页链接(用于获取详细内容)。
示例解析代码(接续上述Python脚本):

提取评论数据

def parse_reviews(data):
if 'ItemsResult' in data:
item = data['ItemsResult']['Items'][0] # 假设第一个商品
review_count = item.get('CustomerReviews', {}).get('Count', 0)
avg_rating = item.get('CustomerReviews', {}).get('StarRating', 0.0)
review_url = item.get('CustomerReviews', {}).get('URL', '')
print(f"评论总数: {review_count}")
print(f"平均评分: {avg_rating}")
print(f"评论页链接: {review_url}")
else:
print("未找到评论数据")

在main中调用

if name == 'main':
data = get_reviews()
parse_reviews(data)
输出示例:

评论总数: 120
平均评分: 4.5
评论页链接: https://www.amazon.com/product-reviews/B08N5WRWNW

  1. 注意事项
    频率限制:免费账户每日调用上限约5000次。超出可能导致封禁。建议使用指数退避策略重试,计算公式为$ \text{重试间隔} = \text{base} \times 2^{\text{attempt}} $秒(其中$\text{base}$为初始间隔)。
    数据限制:PAAPI不返回完整评论文本,只提供摘要和链接。要获取详细评论,需结合网页爬虫(但需注意robots.txt和政策)。
    认证安全:务必保护Access Key;使用环境变量存储凭证。
    错误处理:常见错误如InvalidParameter(参数错误)或RequestThrottled(超限)。检查响应中的__type字段。
    替代方案:如果PAAPI不满足需求,可考虑亚马逊MWS(针对卖家),但需额外权限。
    结语
    通过亚马逊PAAPI,你可以高效获取商品评论的核心数据,助力你的项目开发。记住,始终遵守API使用条款,并测试代码在沙盒环境。如果你有更多问题(如处理分页或优化请求),欢迎在评论区讨论!

相关文章
|
10月前
|
JSON API 数据格式
亚马逊商品评论API接口技术指南
亚马逊商品评论API可程序化获取指定ASIN商品的用户评价,包含评分、内容、时间等结构化数据。需企业认证并遵守使用协议,日调用上限500次。支持分页与排序查询,适用于竞品分析、口碑监测等场景,结合SP-API可构建完整电商数据方案。(238字)
|
3月前
|
弹性计算 人工智能 编解码
阿里云38元和9.9元、199元轻量应用服务器解析:抢购资格、适用场景与使用等常见问题解答
2026年阿里云轻量应用服务器抢购活动推出38元/年(2核2G)和9.9元/月/199元/年(2核4G)两款高性价比配置,均配备200M峰值带宽及预置应用镜像,适合网站搭建、开发测试及AI应用部署等场景。活动限实名认证新用户参与,每个用户仅可购买一台,需在每日10:00和15:00抢购。峰值带宽为共享资源,适合低负载场景,高负载场景建议选择ECS固定带宽方案。
|
JSON 监控 BI
深度分析亚马逊API接口,用Python脚本实现
本内容深度解析亚马逊SP-API接口体系,涵盖商品、订单、库存等核心功能域,详解LWA认证、AWS签名及Python调用实现,适用于跨境电商系统开发与集成。
|
JSON API 数据格式
京东商品评论API秘籍!轻松获取商品评论数据
京东商品评论API是京东开放平台提供的数据接口,支持按商品ID获取评论,具备分页、评分筛选、排序等功能,适用于电商数据分析与用户反馈收集。接口采用HTTPS请求,数据格式为JSON,具备高并发处理能力。附Python请求示例代码,便于开发者快速集成。
|
边缘计算 监控 Java
跨境电商 API 对接避坑指南:亚马逊 SP-API 超时问题的 5 种解决方案(附重试代码模板)
在对接亚马逊 SP-API 时,超时问题常导致订单延迟、库存失败,影响运营。本文总结某 3C 品牌实战经验,详解超时的 3 大根源与 5 大解决方案,涵盖动态超时、重试机制、请求拆分、并发控制与边缘加速,并附可复用 Python 代码,助你将超时率从 20% 降至 1% 以下。
|
8月前
|
缓存 监控 安全
亚马逊商品详情API使用全攻略:从入门到实战落地
本文详解亚马逊商品详情API的全流程应用,涵盖SP-API与PA-API选型、权限申请、调用实操、数据解析及合规优化,助力跨境电商从业者高效获取竞品与Listing数据,实现数据驱动运营。