女朋友没事就喜欢网购,买一大堆又不用,总说不合适,为了不让她花冤枉钱,于是我决定用Python写一个采集商品评论的脚本,然后对商品进行分析,这样就不怕踩到坑了!
让我们直接开始本次操作
准备工作
环境安装
- Python 3.10
- Pycharm
模块使用
- 采集数据模块
-DrissionPage -> pip install DrissionPage
-csv
-time - 数据可视化
-pandas -> pip install pandas
-pyecharts -> pip install pyecharts
-jieba -> pip install jieba
-wordcloud -> pip install wordcloud
源码和视频讲解都打包好了,为了让大家更好的学会本次内容,我加班熬夜录制了详细的视频讲解,希望对大家有帮助。
直接文末名片点一下自取即可
基本流程
一、数据来源分析
1.明确需求
明确采集的网站以及数据内容
网址: https://****/10088121691070.html#comment
数据: 评论相关内容
2.抓包分析
通过浏览器开发者工具分析对应数据位置
- 打开开发者工具
- F12 / 右键点击检查选择 network 网络刷新网页
- 通过关键字搜索找到对应数据位置
- 关键字: 需要什么数据就搜什么数据
数据包地址: https://api.***/
二. 代码实现步骤
requests数据请求
基本步骤: (requests)
1.发送请求: 模拟浏览器对于url地址发送请求
2.获取数据: 获取服务器返回响应数据
3.解析数据: 提取我们需要的数据内容
4.保存数据: 把提取的数据保存本地文件数据包地址: 参数 h5st (加密)
- 如果需要用requests进行数据获取, 是需要进行逆向解密 (难度)
drissionpage自动化模块
模拟人的行为对于浏览器进行操作: 点击 输入 拖拽 获取数据
- 打开浏览器
- 监听数据包 -> 直接监听数据链接
-看数据包是否加载
-监听数据在执行动作之前 - 访问网站
- 直接获取响应数据
- 解析数据
- 保存数据
准备工作
新建一个临时 py 文件,并输入以下代码,填入您电脑里的 Chrome 浏览器可执行文件路径,然后运行。
from DrissionPage import ChromiumOptionspath = r'D:\Chrome\Chrome.exe' # 请改为你电脑内Chrome可执行文件路径
ChromiumOptions().set_browser_path(path).save()
这段代码会把浏览器路径记录到配置文件,今后启动浏览器皆以新路径为准。
另外,如果是想临时切换浏览器路径以尝试运行和操作是否正常,可以去掉 .save() ,以如下方式结合第 步的代码。
from DrissionPage import ChromiumPage, ChromiumOptionspath = r'D:\Chrome\Chrome.exe' # 请改为你电脑内Chrome可执行文件路径
co = ChromiumOptions().set_browser_path(path) page = ChromiumPage(co) page.get('http://DrissionPage.cn')
csv保存数据基本格式
根据你获取的数据不同:
fieldnames 根据提取数据保存在字典中键
encoding=‘utf-8’
如果使用utf-8打开表格文件出现乱码, 改成utf-8-sig
# 导入csv模块 import csv # 创建文件对象
f = open('data.csv', mode='w', encoding='utf-8', newline='') # 字典写入方法
csv_writer = csv.DictWriter(f, fieldnames=['昵称','地区','产品','时间','评论内容'])
# 写入表头 csv_writer.writeheader() """
中间发送请求/获取数据/解析数据代码内容
"""
# 数据保存字典
dit = {} # 写入数据
csv_writer.writerow(dit)
json字典取值
# 键值对取值: 根据冒号左边的内容[键], 提取冒号右边的内容[值]dit = {'姓名': '自游', '信息':{'性别':'男', '爱好': '无'}, '标签': ['1', '2']}
提取性别信息
dit['信息']['性别']
dit['标签'][0]
数据可视化
pyecharts可视化
官方文档: https://gallery.pyecharts.org/#/README
文档中提供非常多可视化模版- 柱状图 / 折线图 / 饼图 / 热力图 / 箱形图...
只需要对于数据进行替换