一、API接入准备
1. 注册开发者账号
- 访问京东开放平台:前往京东开放平台注册账号,完成企业或个人实名认证。
- 创建应用 :在控制台创建应用,获取App Key 和App Secret(用于签名认证)。
2. 申请API权限
- 搜索接口 :在API市场中搜索"商品评论"相关接口(如
jingdong.ware.comment.get
)。 - 提交申请:说明使用场景(如数据分析、竞品调研),部分接口需企业资质或额外审核。
二、API调用核心技术解析
1. 接口基本信息
- 接口名称 :
jingdong.ware.comment.get
(商品评价查询) - 请求方式:HTTPS GET/POST
- 基础URL :
https://api.jd.com/routerjson
2. 必填参数
参数名 | 必填 | 说明 | 示例值 |
---|---|---|---|
app_key |
是 | 应用标识(开放平台获取) | your_app_key |
timestamp |
是 | 当前时间戳(格式:YYYY-MM-DD HH:mm:ss ) |
2025-07-21 10:00:00 |
sign |
是 | MD5签名(生成方法见下文) | A1B2C3D4E5F6G7H8 |
skuId |
是 | 商品SKU ID(从商品链接中提取) | 100012345678 |
page |
否 | 页码(默认1) | 1 |
pageSize |
否 | 每页数量(最大50) | 40 |
sortType |
否 | 排序方式(1=时间倒序,5=点赞降序) | 1 |
3. 签名生成方法
scss
python
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:
sign_str += f"{k}{v}"
sign_str += app_secret
return hashlib.md5(sign_str.encode()).hexdigest().upper()
三、调用示例(Python)
python
python
import requests
import hashlib
import time
from urllib.parse import quote
app_key = "your_app_key"
app_secret = "your_app_secret"
sku_id = "100012345678"
def build_request_params(sku_id, page=1, page_size=10):
params = {
"method": "jingdong.ware.comment.get",
"app_key": app_key,
"timestamp": time.strftime("%Y-%m-%d %H:%M:%S"),
"format": "json",
"v": "2.0",
"sign_method": "md5",
"skuId": sku_id,
"page": page,
"pageSize": page_size,
"sortType": 1 # 按时间倒序
}
params["sign"] = generate_sign(params, app_secret)
return params
def fetch_jd_comments(sku_id):
all_comments = []
page = 1
while True:
params = build_request_params(sku_id, page=page)
response = requests.post(
"https://api.jd.com/routerjson",
data=params,
headers={"Content-Type": "application/x-www-form-urlencoded"}
)
data = response.json()
if data.get("code") != 0 or not data.get("data"):
break
comments = data["data"].get("comments", [])
if not comments:
break
all_comments.extend(comments)
page += 1
time.sleep(1) # 避免频率过高
return all_comments
# 示例调用
comments = fetch_jd_comments(sku_id)
for idx, comment in enumerate(comments[:5]): # 打印前5条评论
print(f"评论{idx+1}:{comment.get('content')}")
四、响应数据解析
1. 成功响应示例
css
json
{
"code": 0,
"message": "success",
"data": {
"total": 12500,
"page": 1,
"pageSize": 10,
"comments": [
{
"userId": "user123456",
"userNick": "京东会员_abc123",
"rating": 5,
"content": "手机运行流畅,拍照效果超出预期",
"creationTime": "2025-06-28 14:30:22",
"pictures": [
"https://img10.360buyimg.com/n1/s450x450_jfs/t1/250000/30/12345/123456/66d12345Eabcd1234/1234567890abcdef.jpg"
],
"replies": [
{
"replyUserId": "jd_official",
"replyContent": "感谢您的认可,我们将持续优化服务",
"replyTime": "2025-06-29 10:15:30"
}
]
}
]
}
}
2. 关键字段说明
content
:评论内容rating
:评分(1-5星)creationTime
:评论时间pictures
:用户上传的图片链接replies
:商家回复内容及时间
五、注意事项
-
频率限制:
- 免费版:每分钟不超过200次。
- 企业版:可申请提升配额,需联系平台。
-
分页处理 :通过循环
page
参数获取全部数据,总页数可通过total
字段计算。 -
错误处理:
401
:Token失效,需重新获取access_token
。400
:参数错误,检查skuId
、page
等参数。
-
数据清洗:
- 评论内容可能包含HTML标签,需用正则表达式清洗。
- 图片链接需验证有效性,避免存储无效资源。
六、替代方案
- 第三方工具 :使用
Taobaoapi2014
等提供的API服务,简化调用流程。 - 数据抓取:通过合法途径模拟浏览器行为,但需遵守平台规则,避免高频请求。
通过以上步骤,您可高效接入京东商品评论API,实现评论数据的自动化获取与分析。如有疑问,可在评论区交流!