淘宝商品评论核心接口taobao.item_review.get(常简称为 taobao.item_review)的详细使用规则、调用细节和实操要点,这是阿里开放平台获取商品评论的核心接口。
一、接口核心信息(taobao.item_review.get)
1. 基础属性
| 维度 | 具体内容 |
|---|---|
| 接口类型 | 淘宝开放平台「商品评价管理」类目下的 REST API |
| 适用场景 | 获取淘宝 / 天猫商品的用户评价(含评分、内容、晒图、追评等) |
| 权限要求 | c0b.cc/R4rbK2 (前往体验接口测试,Taobaoapi2014添加V获取)。 |
| 调用限制 | 按应用等级限流(普通应用单日调用量约 1000次/秒) |
| 数据范围 | 仅返回公开的用户评论,脱敏展示用户昵称,不返回用户隐私信息 |
2. 核心参数(补充高频参数)
除了基础必选参数外,该接口还有以下实用可选参数:
| 参数名 | 是否必选 | 取值 / 说明 |
|---|---|---|
num_iid | 是 | 商品 ID(淘宝商品详情页 URL 中id=后的数字,如1234567890) |
page_no | 否 | 页码,默认 1,最大不超过总页数(总页数 = 总评论数 / 20) |
page_size | 否 | 每页条数,1-20,默认 20 |
rate | 否 | 评分筛选:1(差评)、2(中评)、3(中评)、4(好评)、5(好评) |
has_pic | 否 | 是否只返回带图评论:true/false(默认 false) |
has_add | 否 | 是否只返回追评:true/false(默认 false) |
3. 典型返回数据结构(JSON)
json
{ "item_review_get_response": { "request_id": "123456", // 请求ID(用于排查问题) "total_results": 500, // 该商品总评论数 "reviews": { "review": [ { "id": "10086", // 评论ID "nick": "tbNick123", // 用户昵称(脱敏) "rate": 5, // 评分(1-5) "content": "商品质量很好,物流也快!", // 评论正文 "created": "2026-01-08 15:30:00", // 评论时间 "pic": "https://img.alicdn.com/xxx.jpg", // 晒图URL(多个用逗号分隔) "add_content": "用了一周,还是很好用", // 追评内容 "add_time": "2026-01-15 10:20:00", // 追评时间 "auction_sku": "颜色:白色;尺寸:XL" // 评论对应的商品规格 } ] } } }二、完整可运行的 Python 调用示例(优化版)
该示例新增评分筛选、带图评论筛选功能,更贴合实际使用场景:
1. 环境准备
bash
pip install requests python-dotenv2. 代码实现
python
运行
import requests import time import hashlib import json from dotenv import load_dotenv import os # 加载敏感配置(.env文件) load_dotenv() APP_KEY = os.getenv("TAOBAO_APP_KEY") APP_SECRET = os.getenv("TAOBAO_APP_SECRET") def generate_sign(params: dict, app_secret: str) -> str: """生成淘宝接口签名(严格遵循阿里规则)""" # 1. 按参数名ASCII升序排序 sorted_params = sorted(params.items(), key=lambda x: x[0]) # 2. 拼接签名字符串 sign_str = app_secret for key, value in sorted_params: if value is not None and value != "": sign_str += f"{key}{value}" sign_str += app_secret # 3. MD5加密并转大写 return hashlib.md5(sign_str.encode("utf-8")).hexdigest().upper() def call_taobao_item_review( num_iid: str, page_no: int = 1, page_size: int = 20, rate: int = None, # 筛选评分:1-5,None则不筛选 has_pic: bool = False # 是否只返回带图评论 ) -> dict | None: """ 调用taobao.item_review.get接口 :param num_iid: 商品ID :param page_no: 页码 :param page_size: 每页条数(1-20) :param rate: 评分筛选(1-5) :param has_pic: 是否只返回带图评论 :return: 评论数据字典,失败返回None """ # 1. 构造基础参数 params = { "method": "taobao.item.review.get", "app_key": APP_KEY, "timestamp": time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), "format": "json", "v": "2.0", "sign_method": "md5", "num_iid": num_iid, "page_no": page_no, "page_size": page_size } # 2. 添加可选筛选参数 if rate is not None and 1 <= rate <= 5: params["rate"] = rate if has_pic: params["has_pic"] = "true" # 接口要求字符串格式的true/false # 3. 生成签名 params["sign"] = generate_sign(params, APP_SECRET) # 4. 发送请求 url = "https://eco.taobao.com/router/rest" try: response = requests.post(url, params=params, timeout=10) response.raise_for_status() result = response.json() # 5. 处理错误响应 if "error_response" in result: err = result["error_response"] print(f"接口错误:[{err['code']}] {err['msg']}") return None return result["item_review_get_response"] except Exception as e: print(f"调用失败:{str(e)}") return None # -------------------------- 测试调用 -------------------------- if __name__ == "__main__": # 示例:获取商品1234567890的5星带图评论,第1页,每页10条 review_data = call_taobao_item_review( num_iid="1234567890", page_no=1, page_size=10, rate=5, has_pic=True ) if review_data: total = review_data.get("total_results", 0) print(f"找到{total}条符合条件的评论:") for idx, rev in enumerate(review_data["reviews"]["review"], 1): print(f"\n=== 评论{idx} ===") print(f"用户:{rev['nick']}") print(f"评分:{rev['rate']}星") print(f"内容:{rev['content']}") print(f"规格:{rev.get('auction_sku', '未知')}") print(f"晒图:{rev.get('pic', '无')}")3. .env 文件配置示例
在项目根目录创建.env文件:
env
TAOBAO_APP_KEY=你的实际AppKey TAOBAO_APP_SECRET=你的实际AppSecret三、常见问题与解决方案
| 问题现象 | 原因分析 | 解决方案 |
|---|---|---|
| 403 错误(签名错误) | AppSecret 错误 / 参数排序错误 / 时间戳格式错误 | 1. 核对 AppSecret;2. 确认参数 ASCII 升序;3. 时间戳格式为YYYY-MM-DD HH:MM:SS |
| 401 错误(权限不足) | 未申请接口权限 / 应用未审核通过 | 登录开放平台,在「应用管理 - 权限管理」中申请该接口并等待审核 |
| 返回评论为空 | 商品无评论 / 筛选条件过严 / 页码超限 | 1. 检查商品是否有评论;2. 放宽筛选条件;3. 核对总页数 |
| 调用频率超限 | 单日调用量超过应用限额 | 1. 升级应用等级;2. 增加调用间隔(如每次调用休眠 1 秒) |
四、进阶使用建议
- 分页获取所有评论:通过
total_results计算总页数,循环调用call_taobao_item_review并递增page_no,直到获取所有评论; - 数据存储:将评论数据存入 CSV/MySQL/MongoDB,方便后续分析(如情感分析、关键词提取);
- 异常重试:添加重试机制(如使用
tenacity库),处理网络波动导致的临时失败; - 日志记录:记录每次调用的请求 ID、参数、响应结果,方便问题排查。
总结
taobao.item_review.get是获取淘宝商品评论的官方合规接口,核心是正确生成签名和申请接口权限;- 该接口支持评分、带图、追评等筛选条件,可精准获取目标评论数据;
- 调用时需注意限流规则和数据合规性,敏感配置(AppKey/AppSecret)需避免硬编码。