京东商品评论信息爬取及词云图制作——python爬虫(步骤详细,初学可做)
本项目介绍了一种利用Python爬取京东商品评论并制作词云图的方法。通过使用京东的爬虫工具(包括python、pandas、requests、xpath、json、time等库),可以实现从京东商品页面快速获取商品评论信息。具体流程包括:1)通过手动输入商品编号和页码获取评论信息;2)将评论数据存储为CSV文件;3)利用jieba对评论内容进行词云图制作。项目还提供了完整的爬取和词云图制作代码,包括如何处理数据、生成词云图等。
目录
一、介绍
1.摘要:
2.所需工具:
二、效果展示
1.评论信息表格
2.词云图编辑
三、爬取过程
1.导入所需模块
2.UA伪装
3.评论信息所在网址获取
4.利用input语句输入商品编号实现评论信息爬取
5.利用requests获取html
6.json文件转换为dict
7.实现翻页功能
8.重复上方5,6的步骤
9.获取评论内容、产品颜色、产品型号
10.借助pandas将信息存储为csv文件
11.设置睡眠时长控制数据爬取翻页时间
四、评论信息爬取完整代码展示
五、词云图制作流程
1.导入所需模块
2.导入评论信息所在文件
3.利用jieba对字段进行切分
4.将列表数据转换为字符串
5.利用wordcloud进行词云图制作
六、词云图制作完整代码展示
一、介绍
1.摘要:
本篇内容重点阐述了借助Python语言在京东平台高效获取商品评论信息的技术方法,并详细说明了词云图制作的具体流程。案例研究选取了某知名店铺的小米十四手机,收集了该商品的数百条真实用户反馈。其中,采用手动输入商品编码的方式,可以实现"一机多用"的高效数据获取模式,从而完成不同商品信息的批量爬取任务。
2.所需工具:
爬虫:python、pandas、requests、xpath、json、time
词云图:python、jieba、wordcloud
二、效果展示
1.评论信息表格

2.词云图

三、爬取过程
1.导入所需模块
2.UA伪装
建议直接复制粘贴
获取方式:在商品网页右键点击,依次进行——检查网络设置——打开Network属性——按F5刷新选择第一项——拖动至最底部完成获取User-Agent。
详细方法见上篇[

该算法通过构建高效的优化框架,实现了对大规模数据集的快速处理能力。在理论分析方面,我们成功推导出该算法的收敛性证明,为算法的可靠性提供了有力支持。此外,通过引入创新性的加速机制,显著提升了算法的运行效率。在实验部分,我们对算法的性能进行了全面评估,结果表明该方法在处理复杂问题时展现出卓越的适应能力。最后,我们对算法的实现细节进行了深入探讨,并给出了具体的代码实现方案,为实际应用提供了完整的技术支持。
3.评论信息所在网址获取
(1)注意:
目前需要的链接与过去不同的是,无法通过访问"商品评价"来获取,而是无法获取评论信息。
(2)真实链接查找方法
右键点击——执行网络检查——进入网络设置——页面刷新后,在图示界面的左侧找到所需设置,右侧显示的request url即为目标访问地址
url=‘https://api.m.jd.com/?appid=item-v3&operationId=商品条目&createTime=1700188551707&client=pc&clientVersion=1.0.0& t=1700188551707&loginType=3&uuid=122270672.1700188238960301464362.1700188239.1700188239.1700188239.1& productId=10089055921527&default评分为0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1&bbtf=&shield='

然后选择右侧Preview即可看见我们所需的评论信息,是一个json文件

4.利用input语句输入商品编号实现评论信息爬取
本网页商品编号如图:

通过对比上方网址,可以得知,网址中的productId即为商品编号,从而生成新网址链接。
5.利用requests获取html
6.json文件转换为dict
如前所述,评论信息被封装在JSON文件中。因此,我们可以通过Python的json模块将JSON文件解析为可识别的字典结构。代码如下:
7.实现翻页功能
而maxPage代表的是最大页码值,从图表中可以看出该网页的最大页码值为22,因此通过for循环控制page的数值,可以实现翻页功能的自动化操作。代码实现如下:

8.重复上方5,6的步骤
由于运用for循环使url发生改变,所以要在for循环内重复5,6步骤
注意:自此以下所有步骤都要包含在7的for循环内部
9.获取评论内容、产品颜色、产品型号
在继续使用for循环时,逐一获取评论内容、产品颜色和产品型号的列表。内容涉及字典中使用key取值以及列表的append操作。代码如下
10.借助pandas将信息存储为csv文件
请注意,有些用户可能会遇到与我相同的困扰。最初我将编码设置为encoding="utf-8",但在Excel中打开后却显示为乱码。通过实验发现,采用utf-8-sig编码能够有效解决问题。
11.设置睡眠时长控制数据爬取翻页时间
这一步个人感受是使数据爬取过程像人在浏览一样,防止被察觉。
四、评论信息爬取完整代码展示
import requests
import json
import pandas as pd
import time
#应用input语句实现手动输入商品编号和页码来获取评论
productid=input('请输入商品编号:')
headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko)\
Chrome/119.0.0.0 Safari/537.36'}
url=f'https://api.m.jd.com/?appid=item-v3&functionId=pc_club_productPageComments&client=pc&clientVersion=1.0.0&\
t=1700188551707&loginType=3&uuid=122270672.1700188238960301464362.1700188239.1700188239.1700188239.1&\
productId={productid}&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1&bbtf=&shield='
json_html=requests.get(url,headers=headers).text
#将json字符串转换为字典格式
dict_data=json.loads(json_html)
max_page=dict_data['maxPage']
for num in range (1,max_page+1):
new_url=f'https://api.m.jd.com/?appid=item-v3&functionId=pc_club_productPageComments&client=pc&clientVersion=1.0.0&\
t=1700188551707&loginType=3&uuid=122270672.1700188238960301464362.1700188239.1700188239.1700188239.1&\
productId={productid}&score=0&sortType=5&page={num-1}&pageSize=10&isShadowSku=0&fold=1&bbtf=&shield='
json_html = requests.get(new_url, headers=headers).text
dict_data = json.loads(json_html)
comments_list=dict_data['comments']
content_list=[]
color_list=[]
type_list=[]
for x in comments_list:
comment=x['content']
content_list.append(comment)
for y in comments_list:
color=y['productColor']
color_list.append(color)
for z in comments_list:
type=z['referenceName']
type_list.append(type)
all_data=pd.DataFrame({'评论内容':content_list,'产品颜色':color_list,'产品型号':type_list})
all_data.to_csv('D:/ceshi京东商品评论信息爬取.csv',mode='a',encoding="utf-8-sig")
time.sleep(3)
五、词云图制作流程
1.导入所需模块
2.导入评论信息所在文件
3.利用jieba对字段进行切分
4.将列表数据转换为字符串
由于wordcloud不支持列表,所以要将数据转换为字符串
5.利用wordcloud进行词云图制作
(1)参数配置
height和width分别表示词云图的高度和宽度即宽和长
background_color表示背景图颜色
font_path表示索要设置的字体路径
scale表示字体大小
stopwords表示不需要参与词云图制作的词
tip:font_path查找方法
在C盘的Windows系统中,进入Fonts设置,点击选定字体后,右键属性中的常规选项中,查看第一行内容即可获取font_path变量。
(2)jieba字段导入和词云图导出
六、词云图制作完整代码展示
import jieba
import wordcloud
f=open('D:/小米十四评论.txt',encoding='utf-8')
data=f.read()
data_list=jieba.lcut(data)
str1=" ".join(data_list)
wc=wordcloud.WordCloud(
height=300,
width=500,
background_color='white',
font_path='STZHONGS.TTF',
scale=15,
stopwords={"的",'了','手机','非常','很','!','也',"小米",'我','是','用'}
)
wc.generate(str1)
wc.to_file('D:/小米十四词云图8.png')
