一、接口定位与申请流程
1. 接口名称与文档
- 实际接口名称:
jingdong.ware.comment.get
(商品评价查询接口) - 官方文档:需登录京东开放平台查看,路径为
文档中心 > 商品类目属性 > jingdong.ware.comment.get
。
2. 申请流程
(1) 注册与认证
- 步骤1:注册京东开放平台账号,完成支付宝实名认证。
- 步骤2:提交企业资质(营业执照、法人身份证)或个人身份信息。
(3) 创建应用与权限申请
- 步骤3:在开发者中心创建应用,填写应用名称、描述、回调域名等信息。
- 步骤4:在API市场中搜索“商品评论”相关接口(如
jingdong.ware.comment.get
),提交使用申请,说明使用场景(如数据分析、竞品调研)。
(4) 审核与授权
- 步骤5:提交应用审核,通常1-3个工作日完成。
- 步骤6:审核通过后,获取
App Key
和App Secret
,并签订合作协议。
二、接口参数与调用方法
1. 接口基本信息
- 接口名称:
jingdong.ware.comment.get
- 请求方式:HTTPS GET/POST
- 返回格式:JSON
- 基础URL:
https://api.jd.com/routerjson
2. 必填参数
参数名 | 类型 | 必填 | 说明 |
---|
method | String | 是 | 接口名称,固定为jingdong.ware.comment.get |
app_key | String | 是 | 京东开放平台分配的App Key |
timestamp | String | 是 | 当前时间,格式YYYY-MM-DD HH:mm:ss |
format | String | 是 | 返回格式,固定为json |
v | String | 是 | API协议版本,固定为2.0 |
sign_method | String | 是 | 签名方法,固定为md5 |
skuId | String | 是 | 商品SKU ID(如100012345678 ) |
page | Integer | 是 | 页码,从1开始 |
pageSize | Integer | 是 | 每页评论数(最大50) |
sortType | Integer | 否 | 排序方式(1=按时间降序,2=按评分降序,默认1) |
3. 签名生成方法
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('utf-8')).hexdigest().upper() |
4. 示例代码(Python)
python
import requests |
import hashlib |
import time |
|
class JDAPI: |
def __init__(self, app_key, app_secret): |
self.app_key = app_key |
self.app_secret = app_secret |
self.base_url = 'https://api.jd.com/routerjson' |
|
def _generate_sign(self, params): |
sorted_params = sorted(params.items(), key=lambda x: x[0]) |
sign_str = self.app_secret |
for k, v in sorted_params: |
sign_str += f"{k}{v}" |
sign_str += self.app_secret |
return hashlib.md5(sign_str.encode('utf-8')).hexdigest().upper() |
|
def get_comments(self, sku_id, page=1, page_size=10): |
params = { |
'method': 'jingdong.ware.comment.get', |
'app_key': self.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'] = self._generate_sign(params) |
response = requests.post(self.base_url, data=params, headers={'Content-Type': 'application/x-www-form-urlencoded'}) |
return response.json() |
|
# 使用示例 |
if __name__ == '__main__': |
app_key = 'your_app_key' |
app_secret = 'your_app_secret' |
jd_api = JDAPI(app_key, app_secret) |
result = jd_api.get_comments('100012345678', page=1, page_size=5) |
print(result) |
三、返回数据结构与解析
1. 成功响应示例
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 | String | 评论内容 |
rating | Integer | 评分(1-5星) |
creationTime | String | 评论时间 |
pictures | List | 用户上传的图片链接列表 |
replies | List | 官方或用户的回复内容 |
四、实时关注用户反馈方案
1. 定时任务监控
- 方案:使用
cron
或APScheduler
库设置定时任务,每小时调用一次API获取最新评论。 - 代码示例:
python
from apscheduler.schedulers.blocking import BlockingScheduler |
|
def fetch_latest_comments(): |
latest_page = get_total_pages(sku_id) # 获取总页数 |
for page in range(1, latest_page + 1): |
comments = jd_api.get_comments(sku_id, page=page) |
save_to_db(comments) |
|
scheduler = BlockingScheduler() |
scheduler.add_job(fetch_latest_comments, 'interval', hours=1) |
scheduler.start() |
2. 增量数据获取
- 方法:记录上次获取的最大评论时间戳,仅获取该时间之后的新评论。
- 实现逻辑:
- 首次全量获取并记录最新评论时间。
- 后续调用时,通过
creationTime
参数筛选新增评论。
3. 数据可视化与报警
- 工具:使用
Matplotlib
生成评论趋势图,或集成企业微信/钉钉机器人发送异常评论报警。 - 示例代码:
python
import matplotlib.pyplot as plt |
|
def plot_comment_trend(comments): |
times = [comment['creationTime'] for comment in comments] |
plt.plot(times, [comment['rating'] for comment in comments]) |
plt.savefig('comment_trend.png') |
五、注意事项与合规说明
- 频率限制:
- 普通开发者:每分钟不超过200次请求。
- 企业开发者:可申请提升配额,需联系平台。
- 数据合规性:
- 遵守《京东开放平台开发者协议》,禁止将数据用于非法用途(如恶意营销、侵犯用户隐私)。
- 评论内容可能包含HTML标签,需用正则表达式清洗:
python
import re |
clean_content = re.sub(r'<[^>]+>', '', comment['content']) |
- 错误处理:
401
错误:Token失效,需重新获取access_token
。400
错误:参数错误,检查skuId
、page
等字段。
- 替代方案:
- 若官方API无法满足需求(如需要历史全量数据),可通过京东数据智囊服务(需单独商务洽谈)获取。
通过以上步骤,您可高效接入京东商品评论API,实现评论数据的自动化获取与实时监控,助力业务决策与用户体验优化。