Python 京东商品评论 API 完整示例(含 JSON 返回与解析)
·
主题
京东商品评论 API:调用、JSON 数据结构、Python 解析与分页实战
一、京东评论 API 核心信息(官方)
- 接口地址:
https://api.jd.com/routerjson - 核心方法:
jd.item_review(商品评论列表)jingdong.ware.comment.get(商品评论查询)
- 请求方式:POST / GET
- 必填参数:
method:接口名app_key:应用密钥timestamp:时间戳sign:签名(MD5)sku_id/skuId:商品 IDpage/pageSize:分页
二、完整 Python 调用 + 解析代码
python
运行
import requests
import hashlib
import json
import time
# 配置(替换为你的)
APP_KEY = "your_app_key"
APP_SECRET = "your_app_secret"
API_URL = "https://api.jd.com/routerjson"
SKU_ID = "100012345678" # 商品ID
def generate_sign(params, secret):
"""生成京东API签名(MD5)"""
sorted_params = sorted(params.items(), key=lambda x: x[0])
sign_str = secret + "".join(f"{k}{v}" for k, v in sorted_params) + secret
return hashlib.md5(sign_str.encode()).hexdigest().upper()
def get_jd_comments(sku_id, page=1, page_size=20):
"""调用京东商品评论API"""
params = {
"method": "jd.item_review",
"app_key": APP_KEY,
"timestamp": time.strftime("%Y-%m-%d %H:%M:%S"),
"v": "2.0",
"sku_id": sku_id,
"page": page,
"page_size": page_size,
"score": 0, # 0=全部 1=差评 2=中评 3=好评
"sort_type": 5 # 5=时间 6=推荐
}
params["sign"] = generate_sign(params, APP_SECRET)
try:
resp = requests.get(API_URL, params=params, timeout=10)
return resp.json()
except Exception as e:
print(f"请求异常:{e}")
return None
def parse_jd_comments(json_data):
"""解析京东评论JSON,返回结构化列表"""
comments = []
try:
if json_data.get("code") != "0":
print(f"API错误:{json_data.get('msg', '未知错误')}")
return comments
data = json_data.get("result", {})
comment_list = data.get("comments", [])
for c in comment_list:
comments.append({
"评论ID": c.get("id"),
"用户": c.get("nickname", "匿名用户"),
"评分": c.get("score"),
"内容": c.get("content"),
"时间": c.get("creationTime"),
"图片": c.get("images", []),
"追评": c.get("afterContent"),
"商家回复": c.get("replyContent")
})
except Exception as e:
print(f"解析错误:{e}")
return comments
# 执行
if __name__ == "__main__":
# 1. 获取评论
json_result = get_jd_comments(SKU_ID, page=1, page_size=10)
# 2. 解析
comment_list = parse_jd_comments(json_result)
# 3. 输出
for idx, c in enumerate(comment_list, 1):
print(f"【第{idx}条】")
print(f"用户:{c['用户']} | 评分:{c['评分']}星 | 时间:{c['时间']}")
print(f"内容:{c['内容'][:50]}...")
print("-" * 80)
三、标准 JSON 返回示例(京东官方结构)
json
{
"code": "0",
"msg": "success",
"result": {
"total": 1568,
"page": 1,
"pageSize": 10,
"productCommentSummary": {
"goodRate": 96.8,
"commentCount": 1568,
"goodCount": 1518,
"generalCount": 30,
"poorCount": 20
},
"hotCommentTagStatistics": [
{"name": "物流快", "count": 860},
{"name": "质量好", "count": 720}
],
"comments": [
{
"id": 123456789,
"nickname": "jd_abc***",
"score": 5,
"content": "商品质量很好,物流速度超快,包装严实!",
"creationTime": "2026-04-01 15:30:22",
"images": ["https://img.jd.com/1.jpg"],
"afterContent": "使用一周,非常满意!",
"replyContent": "感谢您的支持,祝您生活愉快!"
}
]
}
}
四、关键字段说明
表格
| 字段 | 说明 |
|---|---|
code |
0 = 成功,非 0 = 失败 |
total |
总评论数 |
goodRate |
好评率(%) |
score |
评分 1-5 星 |
content |
评论内容 |
creationTime |
评论时间 |
images |
晒单图片 |
afterContent |
追评内容 |
replyContent |
商家回复 |
五、分页获取全量评论(常用)
python
运行
# 批量获取前10页
all_comments = []
for page in range(1, 11):
data = get_jd_comments(SKU_ID, page=page, page_size=50)
if data:
all_comments.extend(parse_jd_comments(data))
time.sleep(1) # 防限流
print(f"共获取 {len(all_comments)} 条评论")
六、常见错误
401:签名错误 /app_key无效429:调用频率超限(降速 + 延时)600:权限不足(需申请评论 API 权限)- 无数据:
sku_id错误或商品无评论
更多推荐



所有评论(0)