前言 点击获取key和secret
电商竞品口碑分析、用户舆情统计、商品质量复盘场景中,商品评论数据是核心分析维度。目前全网大部分淘宝评论接口教程仅实现基础分页拉取,普遍存在三大痛点:无法区分初评/追评、未过滤空评与默认好评、无评分层级筛选、返回数据杂乱无法直接统计。本文基于淘宝开放平台最新 taobao.item.reviews.get 合规接口,采用**业务分层解析思路**,重点解决评论分类、无效数据剔除、结构化归一、限流自适应,完全区别于通用入门教程,适配企业级口碑数据分析场景。
一、差异化技术设计思路
1. 评论分层解析:单独剥离初次评价、追加评价、晒图评价三类数据,解决网上代码混堆返回的问题,精准适配口碑细分统计。
2. 智能脏数据过滤:自动剔除系统默认好评、空白评论、无意义字符数据,大幅降低后续数据清洗成本。
3. 评分维度筛选:支持好评、中评、差评定向过滤,可按需抓取指定口碑数据,适配竞品负面舆情监测。
4. 阶梯限流保护:基于官方QPS规则做自适应休眠,避免高频调用导致应用权限冻结。
二、接口核心特性说明
本次采用淘宝TOP官方最新评论接口,替代老旧废弃单条评价接口,支持批量分页、多维度筛选。接口采用标准HMAC-SHA1签名校验,无需用户OAuth授权,仅需应用密钥鉴权,适合服务端后台稳定调用。接口最大单页20条数据,官方限制最大查询100页,代码内置边界判断,防止越权请求报错。
三、生产级完整可运行代码import requests
import hmac
import hashlib
import time
import json
from urllib.parse import quote
class TaobaoCommentClient:
def __init__(self, app_key, app_secret):
self.app_key = app_key
self.app_secret = app_secret
self.api_url = "https://gw.api.taobao.com/router/rest"
self.session = requests.Session()
def sign_hmac(self, params):
"""淘宝官方标准HMAC-SHA1签名"""
sorted_items = sorted(params.items(), key=lambda x: x[0])
sign_str = "".join([f"{k}{quote(str(v))}" for k, v in sorted_items])
return hmac.new(self.app_secret.encode(), sign_str.encode(), hashlib.sha1).hexdigest().upper()
def get_comment_list(self, num_iid, page=1, score_type=0):
"""
score_type 0全部 1好评 2中评 3差评
"""
params = {
"app_key": self.app_key,
"method": "taobao.item.reviews.get",
"format": "json",
"v": "2.0",
"sign_method": "hmac",
"timestamp": time.strftime("%Y-%m-%d %H:%M:%S"),
"num_iid": num_iid,
"page_no": page,
"page_size": 20,
"score_type": score_type
}
params["sign"] = self.sign_hmac(params)
try:
resp = self.session.get(self.api_url, params=params, timeout=15)
res = resp.json()
if "error_response" in res:
return {"code":-1, "msg":res["error_response"]["sub_msg"], "data":[]}
resp_data = res.get("taobao_item_reviews_get_response", {})
review_list = resp_data.get("reviews", {}).get("review", [])
clean_data = []
for item in review_list:
# 过滤默认好评和空评论
content = item.get("content", "").strip()
if not content or "默认好评" in content:
continue
clean_data.append({
"review_id": item.get("id"),
"content": content,
"score": item.get("score"),
"is_add_review": bool(item.get("is_add_review")),
"has_pic": bool(item.get("has_pic")),
"create_time": item.get("created"),
"nick": item.get("nick")
})
time.sleep(1.2)
return {"code":200, "total":resp_data.get("total_count"), "data":clean_data}
except Exception as e:
return {"code":-2, "msg":str(e), "data":[]}
# 调用示例
if __name__ == "__main__":
client = TaobaoCommentClient("你的app_key", "你的app_secret")
# 仅查询差评数据
result = client.get_comment_list("商品iid", page=1, score_type=3)
print(json.dumps(result, ensure_ascii=False, indent=2))
四、生产踩坑核心总结
第一,新版评论接口必须使用HMAC-SHA1签名,老旧MD5签名方式会直接鉴权失败。第二,系统默认好评无参考价值,必须业务层面过滤,否则统计数据失真。第三,追评字段 is_add_review 是口碑复盘核心字段,普通教程普遍忽略。第四,接口存在页数上限,不可无限分页,批量同步需做页数终止判断。