1. 项目概述
最近在做一个很有意思的数据分析小项目——爬取京东商品评论数据并进行可视化分析。这个需求源于我朋友开的电商公司,他们想了解消费者对竞品的真实评价,但手动翻看几千条评论实在太费时。于是我决定用Python写个自动化工具,把评论数据抓下来做系统分析。
这个项目主要涉及三个技术环节:数据爬取、数据清洗和可视化呈现。整个过程走下来,发现其中有不少值得分享的技巧和踩过的坑。特别是京东的反爬机制越来越完善,需要一些特殊处理才能稳定获取数据。下面我就把整个实现过程拆解开来,包括代码实现和避坑经验。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 技术选型与准备
2.1 工具链选择
核心工具我选择了Python生态中的几个经典库:
- Requests + BeautifulSoup:用于网页抓取和解析
- Pandas:数据处理和分析
- Matplotlib + Seaborn:数据可视化
- Jieba + WordCloud:中文分词和词云生成
选择这套组合主要考虑几点:
- 轻量级,不需要复杂的环境配置
- 社区支持好,遇到问题容易找到解决方案
- 功能覆盖全面,从爬取到分析都能搞定
注意:京东页面有动态加载内容,纯静态解析可能不够。可以考虑加入Selenium做动态渲染,但会增加复杂度。根据我的测试,核心评论数据其实都在初始HTML中,所以本项目暂未使用。
2.2 环境配置
建议使用Python 3.8+版本,主要库安装命令:
bash复制pip install requests beautifulsoup4 pandas matplotlib seaborn jieba wordcloud
如果要做更复杂的文本分析,可以加装:
bash复制pip install scikit-learn nltk
3. 数据爬取实现
3.1 分析京东评论接口
京东的评论数据主要通过API接口获取,而不是直接解析HTML。通过浏览器开发者工具可以找到真实的请求地址,通常是这样的格式:
code复制https://club.jd.com/comment/productPageComments.action?productId=商品ID&score=0&sortType=5&page=页码&pageSize=10
关键参数说明:
- productId:商品编号,可以从商品URL中提取
- score:评价类型(0全部,1好评,2中评,3差评)
- sortType:排序方式(5按时间,6按有用数)
- pageSize:每页条数(最大可设100)
3.2 爬虫代码实现
基础爬取代码如下:
python复制import requests
import pandas as pd
from time import sleep
import random
def get_jd_comments(product_id, max_pages=10):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36...',
'Referer': f'https://item.jd.com/{product_id}.html'
}
all_comments = []
for page in range(0, max_pages):
url = f'https://club.jd.com/comment/productPa
