一、前期准备
只需要提前装好Python3.6及以上版本,Python官方下载地址:https://www.python.org/downloads/,安装时务必勾选Add Python to PATH选项。
1.1 安装所需依赖
Windows按Win+R输入cmd回车打开命令提示符,Mac直接打开终端,执行以下命令即可完成安装:
```
pip install requests pyquery
```
如果下载速度慢,替换为国内镜像源安装命令:
```
pip install requests pyquery -i https://pypi.tuna.tsinghua.edu.cn/simple
```
二、获取目标商品ID
打开京东网页版,进入你要提取评价的商品详情页,查看浏览器地址栏的URL,格式示例:
https://item.jd.com/100012043978.html
URL中.html前缀的纯数字就是商品ID,本例中商品ID为100012043978,复制保存这个ID备用。
三、编写可直接运行的完整代码
新建一个空白文本文档,将文件名后缀改为.py(例如命名为jd_comment.py),把下面的代码完整复制进去,只需要修改代码开头的两个配置参数,其他内容无需改动:
```
import requests
import csv
import time
from pyquery import PyQuery as pq
需要你修改的配置项-
PRODUCT_ID = "100012043978" 替换成你复制的商品ID
TOTAL_PAGE = 10 替换成你要抓取的总页数,每页默认返回10条评价
SCORE_TYPE = 0 0=全部评价 1=好评 2=中评 3=差评
模拟浏览器请求头,避免被反爬拦截
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": "https://item.jd.com/"
}
初始化CSV文件保存结果,utf_8_sig编码支持Excel直接打开不乱码
with open(f"jd_comments_{PRODUCT_ID}.csv", "w", newline="", encoding="utf_8_sig") as f:
writer = csv.writer(f)
写入表头
writer.writerow(["用户昵称", "评价内容", "评分", "评价时间", "购买规格"])
循环抓取每一页
for page in range(TOTAL_PAGE):
拼接京东官方公开评价接口
url = f"https://club.jd.com/comment/productPageComments.action?productId={PRODUCT_ID}&score={SCORE_TYPE}&sortType=5&page={page}&pageSize=10&isShadowSku=0&fold=1"
发送请求获取数据
response = requests.get(url, headers=HEADERS, timeout=10)
data = response.json()
comments = data.get("comments", [])
无更多评价时自动终止
if not comments:
print(f"已抓取全部可用评价,共{page}页")
break
解析每条评价字段
for comment in comments:
nickname = comment.get("nickname", "匿名用户")
content = pq(comment.get("content", "")).text().replace("\n", " ")
score = comment.get("score", "")
create_time = comment.get("creationTime", "")
spec = f"{comment.get('productColor', '')} {comment.get('productSize', '')}".strip()
写入CSV文件
writer.writerow([nickname, content, score, create_time, spec])
print(f"第{page+1}页抓取完成,本次获取{len(comments)}条评价")
抓取多页时添加间隔,避免触发反爬
if TOTAL_PAGE > 5:
time.sleep(1)
print(f"\n全部任务完成,结果保存在当前文件夹:jd_comments_{PRODUCT_ID}.csv")
```
四、运行代码获取结果

打开命令提示符/终端,进入你保存jd_comment.py的文件夹,例如文件存在D盘的jd文件夹下,依次执行命令:
```
d:
cd jd
```
然后执行运行命令:
```
python jd_comment.py
```
等待程序运行完成,就会在同一文件夹下生成CSV格式的评价文件,直接用Excel或WPS打开即可查看、筛选所有评价内容。
五、常见问题解决
-
1. 运行提示模块不存在
如果执行命令提示找不到requests或pyquery,说明你的环境默认调用python2,把pip和python替换为pip3和python3即可,安装命令改为pip3 install requests pyquery,运行命令改为python3 jd_comment.py。
-
2. 运行报错,抓取不到数据
首先检查商品ID是否正确,不要带多余的空格或符号,下架、未上架的非公开商品不会有评价数据。如果还是报错,浏览器搜索「我的UA」,把复制得到的自己浏览器的User-Agent替换代码中HEADERS里的对应值即可。
-
3. 抓取大量评价会被封IP吗
京东公开评价接口对普通访问限制很低,单次抓取100页以内都不会触发拦截,代码默认已经给超过5页的抓取添加了1秒间隔,如果需要抓取更多页数,可以把间隔修改为2秒,不会有问题。
-
4. CSV打开乱码怎么办
代码已经默认使用utf_8_sig编码,WPS和Excel都可以正常打开,如果还有乱码,用记事本打开CSV文件,选择「另存为」,编码选择UTF-8保存后再用Excel打开即可。