、引言
在电商竞争白热化的当下,用户评论是连接商家与消费者的核心纽带,更是产品迭代、竞品分析、舆情监控的 “数据金矿”。京东作为国内头部电商平台,商品评论数据涵盖评分、内容、追评、晒单等多维度信息,真实反映用户消费体验与产品痛点。
对于数据从业者、运营人员及开发者而言,高效采集并结构化这些数据,能为市场调研、用户画像构建、情感分析提供坚实支撑。本文将从接口分析、反爬策略、代码实现、数据存储与实战价值五个维度,详解京东评论数据采集的完整方案,全程采用 Python 实现,代码简洁可复用,适配掘金技术社区分享风格。
二、京东评论接口核心分析
京东商品评论采用异步动态加载机制,未公开的 Web 端接口是采集核心,无需复杂逆向工程即可稳定调用。
1. 核心接口地址
plaintext
https://club.jd.com/comment/productPageComments.action
2. 关键请求参数
表格
| 参数 | 说明 | 取值 |
|---|---|---|
| productId | 商品唯一 ID | 商品链接中提取(如 100012043978) |
| score | 评论类型 | 0 = 全部,1 = 好评,2 = 中评,3 = 差评,5 = 有图 |
| sortType | 排序方式 | 5 = 最新,6 = 最热 |
| page | 页码 | 从 0 开始递增 |
| pageSize | 每页条数 | 建议 10(默认) |
| isShadowSku | 影子商品 | 0 = 不包含 |
3. 反爬机制与应对策略
京东基础反爬集中在请求头校验、IP 限流、高频拦截,无需验证码即可应对:
- 模拟浏览器请求头:携带 User-Agent、Referer,伪装正常用户访问;
- 随机延时:请求间隔 1-3 秒,避免高频请求被封禁;
- 参数合规化:严格匹配接口参数格式,避免异常参数触发风控。
三、Python 代码实现:从采集到结构化存储
1. 环境准备
安装核心依赖库:
bash
运行
pip install requests pandas json
2. 完整采集代码(可直接运行)
python
运行
import requests
import pandas as pd
import json
import time
import random
class JdCommentCrawler:
def __init__(self, product_id):
self.product_id = product_id
self.base_url = "https://club.jd.com/comment/productPageComments.action"
# 模拟浏览器请求头
self.headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
"Referer": f"https://item.jd.com/{product_id}.html",
"Accept": "application/json, text/plain, */*"
}
def fetch_single_page(self, page):
"""采集单页评论数据"""
params = {
"productId": self.product_id,
"score": 0,
"sortType": 5,
"page": page,
"pageSize": 10,
"isShadowSku": 0,
"fold": 1
}
try:
# 随机延时,规避限流
time.sleep(random.uniform(1, 2))
response = requests.get(self.base_url, headers=self.headers, params=params, timeout=10)
response.raise_for_status()
# 清洗接口返回的冗余字符
json_data = json.loads(response.text.replace("fetchJSON_comment98(", "").replace(");", ""))
return json_data.get("comments", [])
except Exception as e:
print(f"第{page+1}页采集失败:{str(e)}")
return []
def crawl_all_comments(self, max_pages=5):
"""批量采集多页评论并结构化"""
all_comments = []
for page in range(max_pages):
comments = self.fetch_single_page(page)
if not comments:
break
# 提取核心字段
for comment in comments:
comment_info = {
"用户昵称": comment.get("nickname", "匿名用户"),
"评分(星)": comment.get("score", 0),
"评论时间": comment.get("creationTime", ""),
"评论内容": comment.get("content", ""),
"购买型号": comment.get("productAttr", ""),
"是否有图": "是" if comment.get("hasImage", False) else "否",
"追评内容": comment.get("appendContent", "")
}
all_comments.append(comment_info)
return pd.DataFrame(all_comments)
# 主程序调用
if __name__ == "__main__":
# 替换为目标商品ID(从京东商品链接提取)
PRODUCT_ID = "100012043978"
crawler = JdCommentCrawler(PRODUCT_ID)
# 采集前5页评论(可调整max_pages)
comments_df = crawler.crawl_all_comments(max_pages=5)
# 保存为CSV文件(结构化存储,便于后续分析)
comments_df.to_csv("京东商品评论数据.csv", index=False, encoding="utf-8-sig")
print(f"采集完成!共获取{len(comments_df)}条评论,已保存至本地CSV文件")
# 打印前3条预览
print("\n评论数据预览:")
print(comments_df.head(3))
四、数据解析与实战价值
1. 核心字段解析
采集后的数据包含 7 大核心字段,覆盖用户反馈全维度:
- 基础信息:用户昵称、评分、评论时间;
- 核心内容:评论文本、追评内容(深度反馈);
- 辅助信息:购买型号、是否有图(提升数据可信度)。
2. 多场景实战价值
- 产品优化:高频提取差评关键词(如 “质量差”“物流慢”),定位产品痛点;
- 竞品分析:批量采集同类商品评论,对比好评率、用户关注点,制定差异化策略;
- 舆情监控:实时采集最新评论,快速响应负面反馈,维护品牌口碑;
- 用户画像:结合评论时间、购买型号,分析不同用户群体的消费偏好。
五、合规与优化建议
1. 合规底线
- 仅采集公开评论数据,禁止获取用户隐私信息(如手机号、地址);
- 严格控制请求频率,避免高频批量采集,遵守平台使用规则;
- 数据仅用于个人学习与非商业研究,禁止用于非法用途。
2. 进阶优化方向
- 分布式采集:引入代理 IP 池,突破 IP 限流,支持大规模数据采集;
- 情感分析:结合 NLP 工具(如 jieba、SnowNLP),自动分析评论情感倾向;
- 数据可视化:用 Matplotlib、ECharts 生成好评率、评分分布图表,直观展示数据趋势。
六、总结
本文通过接口分析、反爬应对、代码实现与价值挖掘,完整呈现了京东评论数据采集的实战方案。整个过程无需复杂技术栈,基于 Python 基础库即可实现,代码可直接复制运行,结构化数据便于后续分析与可视化。
对于技术开发者而言,掌握电商评论采集技术,不仅能提升数据处理能力,还能为业务决策提供数据支撑。后续可拓展多平台评论采集、实时舆情监控等功能,构建完整的电商用户反馈分析体系。tg:@some1899