京东商品评论 API 返回数据解析指南:从嵌套 JSON 到结构化评论信息
京东商品评论API返回数据解析指南:从嵌套JSON到结构化评论信息
一、接口基础信息
京东商品评论API(如jingdong.ware.productcomment.get)主要用于获取指定商品的详细评价数据,包括用户文字评论、图片、评分、时间戳、用户属性(脱敏昵称、等级)、商家回复等内容。返回数据为嵌套JSON格式,需通过结构化解析提取关键字段。
二、典型返回数据结构示例
{"code": 200,"message": "success","data": {"productCommentSummary": {"goodRateShow": 98, // 好评率(%)"commentCount": 50000, // 总评论数"goodCount": 48000, // 好评数"generalCount": 1500, // 中评数"poorCount": 500 // 差评数},"hotCommentTagStatistics": [ // 热门标签统计{"id": 1, "name": "物流快", "count": 5000},{"id": 2, "name": "质量好", "count": 3000}],"comments": [ // 评论列表(每页最多100条){"id": "123456789","content": "东西很好,物流很快","creationTime": "2023-01-01 12:00:00","score": 5,"usefulVoteCount": 200, // 有用投票数"nickname": "jd_123", // 用户脱敏昵称"images": [ // 评论图片{"imgUrl": "//img30.360buyimg.com/n1/s450x450_jfs/..."}],"afterUserComment": { // 追评(如有)"content": "使用后效果很好,推荐购买!","creationTime": "2023-01-10 10:00:00"}}]}
}三、关键字段解析与结构化处理
1. 顶层字段
code:接口状态码(200表示成功)。message:错误信息(成功时为"success")。data:核心数据容器,包含评论摘要、标签统计和评论列表。
2. 评论摘要(productCommentSummary)
goodRateShow:好评率(百分比),用于快速评估商品口碑。commentCount:总评论数,反映商品热度。goodCount/generalCount/poorCount:分评分等级统计,支持可视化展示(如柱状图)。
3. 热门标签(hotCommentTagStatistics)
- 结构:
[{"id": 标签ID, "name": 标签名, "count": 出现次数}]。 - 用途:提取高频关键词(如“物流快”“质量差”),分析用户关注焦点。
4. 评论列表(comments)
每条评论包含以下字段:
id:评论唯一标识符,用于去重或追评关联。content:用户文字评论,可能含HTML标签或特殊符号,需清洗(如用正则表达式去除<br>)。score:1-5分评分,支持按评分筛选(如仅分析差评)。creationTime:ISO 8601格式时间戳,需转换为可读日期(如2023-01-01)。images:图片URL数组,可能为空。afterUserComment:追评内容(如有),需与首评关联分析。usefulVoteCount:有用投票数,反映评论质量。
5. 用户信息(脱敏)
nickname:用户昵称(如"jd_123"),保护隐私。userLevelName(部分接口返回):用户等级(如“钻石会员”)。
四、Python解析代码示例
import json
from datetime import datetime
import pandas as pd# 假设raw_json为API返回的原始数据
raw_json = '''{"code":200,"message":"success","data":{...}}''' # 替换为实际JSON
data = json.loads(raw_json)# 提取评论列表
comments = data["data"]["comments"]# 结构化存储
structured_comments = []
for comment in comments:# 时间转换creation_time = datetime.strptime(comment["creationTime"], "%Y-%m-%d %H:%M:%S")# 图片处理images = comment.get("images", [])img_urls = [img["imgUrl"] for img in images]# 追评处理after_comment = comment.get("afterUserComment", {})structured_comment = {"comment_id": comment["id"],"content": comment["content"],"score": comment["score"],"creation_time": creation_time,"useful_votes": comment["usefulVoteCount"],"images": img_urls,"after_content": after_comment.get("content", ""),"after_time": after_comment.get("creationTime", "")}structured_comments.append(structured_comment)# 转换为DataFrame
df = pd.DataFrame(structured_comments)
print(df.head())五、数据清洗与优化
- 缺失值处理:
- 对
reply、images等可能为空的字段填充默认值(如空列表或None)。
- 对
- 评分标准化:
- 将1-5分映射为文本标签(如
1-2:"差评",3:"中评",4-5:"好评")。
- 将1-5分映射为文本标签(如
- 文本清洗:
- 去除评论中的HTML标签、特殊字符或广告内容。
- 图片链接验证:
- 检查URL有效性,过滤无效链接。
六、扩展应用场景
- 情感分析:
- 使用
jieba分词+TextBlob或自定义情感词典,对评论内容进行正向/负向分类。
- 使用
- 关键词提取:
- 通过TF-IDF或BERT模型提取高频词,生成词云图。
- 时间序列分析:
- 按日/周统计评论数量与评分分布,分析销售周期或活动效果。
- 图片内容识别:
- 通过图像识别技术(如OpenCV)分析商品实物与描述的一致性。
