要获取淘宝商品评论的JSON数据,需通过淘宝开放平台的商品评论API接口实现。以下是详细步骤及代码示例:
1. 准备工作
- 联系博主申请接口权限:
- 创建应用并申请权限:在控制台创建应用,获取
app_key
和app_secret
,并申请taobao.item.reviews.get
接口权限。 - 安装依赖库:
bash pip install requests hashlib
2. 接口核心参数
参数名 | 必选 | 说明 | 示例值 |
method |
是 | 接口名称 | taobao.item.reviews.get |
app_key |
是 | 应用标识 | YOUR_APP_KEY |
item_id |
是 | 商品ID(从商品URL提取) | 123456789 |
page_no |
否 | 分页页码(默认1) | 1 |
page_size |
否 | 每页评论数(默认20,最大100) | 50 |
sort |
否 | 排序方式(时间/评分) | create_time:desc |
sign |
是 | 签名(MD5/HMAC-SHA256) | 自动生成 |
3. 签名生成算法
使用MD5算法生成签名:
python import hashlib import time def generate_sign(params, app_secret): sorted_params = sorted(params.items(), key=lambda x: x[0]) sign_str = app_secret for k, v in sorted_params: if k != 'sign' and v: sign_str += f"{k}{v}" sign_str += app_secret return hashlib.md5(sign_str.encode('utf-8')).hexdigest().upper()
4. 完整调用代码
python import requests import time # 配置参数 APP_KEY = "YOUR_APP_KEY" APP_SECRET = "YOUR_APP_SECRET" ITEM_ID = "123456789" # 替换为实际商品ID API_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", "item_id": ITEM_ID, "page_no": 1, "page_size": 50, "sort": "create_time:desc" } # 生成签名并添加到参数 params["sign"] = generate_sign(params, APP_SECRET) # 发送请求 response = requests.get(API_URL, params=params) result = response.json() # 解析响应数据 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['created']}") print(f"评分: {review['score']}星") print(f"评论内容: {review['content']}") if "pictures" in review and review["pictures"]: print(f"晒图链接: {review['pictures'][0]}")
5. JSON数据结构示例
成功响应的JSON数据包含以下字段:
json { "item_reviews_get_response": { "total_results": "4605", "reviews": [ { "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" } } ] } }