在当今大数据时代,网络数据挖掘与分析已成为企业决策和产品优化的重要依据。本文将详细介绍如何通过Python爬虫技术采集京东商品评论,并进行数据清洗、可视化分析和情感分析的全过程。本教程适合有一定Python基础,对数据分析和网络爬虫感兴趣的读者。
> 本文章中所有内容仅供学习交流使用,不用于其他任何目的,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!
一、项目背景
随着电商的发展,商品评论数据已经成为用户决策的重要依据,也是商家了解市场反馈、优化产品的关键参考。
然而,该平台评论接口加密参数破解复杂,使得采集评论数据变得较为困难。
本项目以京东商品评论采集为目标,借助 DrissionPage + PyAutoGUI 构建了一个稳定、可用的数据采集程序,支持多标签分类评论采集,并将评论数据保存至 CSV 文件中。
更新时间:2025-9-13
drissionpage版本
二、项目亮点与应用场景
🌟 项目亮点:
-
支持多标签评论抓取(好评、中评、差评、追评等)
-
模拟用户浏览行为,真实触发评论加载
-
直接监听京东 API,数据结构清晰,稳定可用
-
数据直接保存为表格(CSV),方便后期分析建模
📈 可应用于:
-
情感分析 / 关键词提取
-
商品优化 / 用户画像分析
-
数据科学练习项目
-
教学、论文数据集采集
三、环境准备
pip install DrissionPage pyautogui
✅ 额外要求:
-
安装 Chrome 浏览器
-
Chrome 开启调试模式(默认监听端口 127.0.0.1:9527)
-
DrissionPage 已配置好
ChromiumPage运行环境
四、采集字段说明
以下是本项目采集的京东评论字段,采集结果会以 CSV 格式保存。
| 字段名 | 描述 | 示例 |
|---|---|---|
| 用户名 | 评论者在京东的昵称 | 小李** |
| 评分 | 商品评分,范围为 1~5 | 5 |
| 评论时间 | 评论发布时间 | 2024-03-15 |
| 评论内容 | 用户对商品的评论文字 | 手机手感很好,运行流畅! |
所有数据均保存为 CSV 文件,可直接导入 Excel 或 Python 分析。
五、爬虫实现思路
1️⃣ 打开商品详情页
通过 DrissionPage 自动访问指定京东商品链接。 详情页地址
from DrissionPage import ChromiumPage
page = ChromiumPage('127.0.0.1:9527')
page.get('https://item.jd.***/100112301034.html')
2️⃣ 点击“全部评论”入口
页面结构相对清晰,通过 XPath 定位并点击“查看所有评论”按钮。
3️⃣ 循环点击不同的评论标签
自动点击如“晒图”、“视频”、“差评”、“追加评论”等选项,确保采集完整标签数据。
4️⃣ 模拟滚动加载评论内容
通过 pyautogui.scroll() 模拟真实用户滚动行为,触发京东页面异步加载。
5️⃣ 监听评论接口数据
京东的评论是通过 API 加载的,使用 page.listen.start() 监听接口 /client.action,直接拿到 JSON 数据。
6️⃣ 解析 JSON 并存入 CSV
提取字段写入 jd.csv,格式清晰,方便使用。
六、项目运行效果展示
七、情感分析
SnowNLP 是一个专为处理中文文本设计的 Python 库,基于自然语言处理技术,提供了多种功能,包括分词、词性标注、情感分析、文本转换(简繁转换)、关键词提取、摘要生成等。其核心优势在于对中文文本的处理能力,尤其是情感分析功能。
SnowNLP 的情感分析功能基于一个预训练的模型,能够判断文本的情感倾向是正面还是负面。情感分析的结果是一个介于 0 到 1 之间的浮点数,分数越接近 1,表示文本的情感倾向越正面;分数越接近 0,表示文本的情感倾向越负面。
由于snlp原始是用购物类的数据进行训练得到的模型,然后这次的数据手机购物评论数据,因此该项目就不自主进行模型的学习和训练
from snownlp import SnowNLP
import numpy as np
def process1(x):
try:
score = SnowNLP(x).sentiments
return score
except:
return np.nan
df_ = df['评论内容'].drop_duplicates().to_frame().reset_index(drop=True)
df_['情感得分'] = df_['评论内容'].apply(process1)
df_['评分等级'] = pd.cut(df_['情感得分'],bins=[0, 0.5, 0.8, 1],labels=['差评', '中评', '好评'],right=False) # 包含左边界,不包含右边界
八、完整代码
(一)数据采集(爬虫)部分
如果你对这个项目感兴趣,想要获取完整可运行的源代码,欢迎在评论区留言或私信(主页 \/)zzxcrq1234 伪善。