Python采集淘宝商品评论API接口及JSON数据返回全程指南
一、接口基础信息
接口名称:taobao.item.reviews.get
请求地址:关注博主
请求方式:HTTP GET/POST
数据格式:JSON
认证方式:App Key + App Secret + 签名验证(MD5/HMAC-SHA1)
核心功能:获取淘宝/天猫商品的文字、图片、视频评论,支持分页、筛选(评分、时间范围)、自定义返回字段。
二、前期准备
- 注册淘宝开放平台账号
- 关注博主完成企业/个人实名认证。
- 企业开发者需提交营业执照,可获得更高调用配额(每日上限10000次)。
- 创建应用并获取权限
- 在控制台创建应用,获取
App Key和App Secret。 - 申请
taobao.item.reviews.get接口权限。
- 安装依赖库
bash pip install requests hashlib
三、接口调用全流程
1. 参数说明
| 参数名 | 类型 | 必填 | 说明 |
app_key |
String | 是 | 应用唯一标识 |
method |
String | 是 | 接口名称,固定为taobao.item.reviews.get |
timestamp |
String | 是 | 时间戳,格式YYYY-MM-DD HH:MM:SS |
format |
String | 是 | 返回格式,固定为json |
v |
String | 是 | API版本,固定为2.0 |
sign_method |
String | 是 | 签名方法,支持md5或hmac-sha1 |
item_id |
String | 是 | 商品ID(从商品详情页URL提取,如https://item.taobao.com/item.htm?id=123456789中的123456789) |
page_no |
Int | 否 | 页码,默认1 |
page_size |
Int | 否 | 每页条数,默认20,最大100 |
rate_type |
String | 否 | 评论类型:good(好评)、neutral(中评)、bad(差评) |
has_image |
Bool | 否 | 是否包含图片评论,true/false |
sort |
String | 否 | 排序方式:create_time:desc(最新)、create_time:asc(最早) |
2. 签名生成算法
python import hashlib import time def generate_sign(params, app_secret): # 按参数名ASCII码升序排序 sorted_params = sorted(params.items(), key=lambda x: x[0]) # 拼接参数字符串(跳过sign字段) sign_str = app_secret for k, v in sorted_params: if k != 'sign' and v: sign_str += f"{k}{v}" sign_str += app_secret # MD5加密并转为大写 return hashlib.md5(sign_str.encode('utf-8')).hexdigest().upper()
3. 完整调用代码
python import requests import time APP_KEY = "YOUR_APP_KEY" APP_SECRET = "YOUR_APP_SECRET" ITEM_ID = "123456789" # 替换为实际商品ID def get_taobao_comments(item_id, page=1, page_size=20): url = "https://eco.taobao.com/router/rest" params = { "method": "taobao.item.reviews.get", "app_key": APP_KEY, "timestamp": time.strftime("%Y-%m-%d %H:%M:%S"), "format": "json", "v": "2.0", "sign_method": "md5", "item_id": item_id, "page_no": page, "page_size": page_size, "sort": "create_time:desc" } # 生成签名 params["sign"] = generate_sign(params, APP_SECRET) # 发送请求 response = requests.get(url, params=params) return response.json() # 调用示例 try: result = get_taobao_comments(ITEM_ID) if "error_response" in result: print(f"请求失败: {result['error_response']['msg']}") else: reviews = result["item_reviews_get_response"]["reviews"]["review"] print(f"共获取到{len(reviews)}条评论:") for review in reviews: print(f"\n用户昵称: {review['user_nick']}") print(f"评分: {review['score']}星") print(f"评论内容: {review['content']}") print(f"时间: {review['created']}") if "pictures" in review and review["pictures"]: print(f"晒图链接: {review['pictures'][0]}") except Exception as e: print(f"发生错误: {e}")
四、JSON数据结构解析
成功响应示例:
json { "item_reviews_get_response": { "total_results": 4605, "reviews": { "review": [ { "tid": "123456789", "user_nick": "买家昵称", "content": "商品质量很好,物流也很快!", "score": 5, "created": "2025-03-25 10:00:00", "pictures": ["http://example.com/image1.jpg"], "reply": { "seller_nick": "卖家昵称", "content": "感谢您的支持!", "reply_time": "2025-03-25 12:00:00" } } ] } } }
核心字段说明:
total_results:商品总评论数。reviews.review:评论列表,每条评论包含:
user_nick:用户昵称(脱敏处理)。content:评论正文。score:评分(1-5星)。created:评论时间。pictures:评论图片URL列表(可选)。reply:商家回复内容及时间(可选)。