Python采集某网宝百万商品评论,实现数据可视化,生成词云图

自打双十一出来后,又开始618,好了现在718都出来了,生怕大家不买了~

好好好,既然这样,今天我们就用Python来采集一下某宝的商品评论数据进行分析,以后购物不踩坑。


话不多说,让我们开始吧~

准备工作

环境使用

Python 3.10 解释器
Pycharm 编辑器

模块使用

requests >>> 数据请求 pip install requests
pandas >>> 数据处理 pip install pandas
jieba >>> 分词处理 第三方模块 pip install jieba
wordcloud >>> 词云图 第三方模块 pip install wordcloud

为了让大家更深入的学会本案例,昨晚熬夜加班录制了详细的视频讲解,希望对大家有帮助,跟源码一起打包好了,直接文末名片领取,点我直达文末

爬虫实现基本流程

一、数据来源分析

1.明确需求

明确采集的网站以及数据内容

  • 网址: https://******?spm=a21n57.1.item.2.3b4a5325fap7JU&priceTId=21 47813017210377164087471ea11c&utparam=%7B%22aplus_abtest%22:%22a5736e758474a 155ced3b085925c0e39%22%7D&id=792822950990&ns=1&abbucket=4
  • 数据: 评论相关信息内容
2.抓包分析

通过浏览器开发者工具分析对应的数据位置

  • 打开开发者工具
    • F12 / 右键点击检查选择 network (网络)
  • 刷新网页
    • 让本网页数据(我们需要的数据)重新加载一遍
  • 通过关键字搜索找到对应的数据位置
    • 返回数据包比较多, 比较杂
    • 关键字: 需要什么数据就搜什么数据

数据包地址: https://*****m/h5/mtop.alibaba.review.list.for.new.pc.detail/1.0/

二、代码实现步骤

1.发送请求

模拟浏览器对于url地址发送请求

模拟浏览器

使用请求标头里面参数内容

  • 开发者工具 -> 网络 -> 点击对应数据包 -> 标头 -> 请求标头(参数)
  • 请求标头复制之后在代码中, 字典形式

字典: 构建完整键值对

dit = {'cookie': 'value', 'ua': 'value1'} key 键
value 值
'key': 'value' 键值对

请求网址


发送请求

2.获取数据

获取服务器返回响应数据

response.text

  • 获取响应的文本数据 -> 字符串

response.json()

  • 获取响应的json数据 -> 一般情况 字典
  • 响应数据必须是完整json数据格式
    • 响应数据是由 {} / [] 包裹起来

response.content

  • 获取响应的二进制数据 -> 二进制
  • 一般用于获取图片/视频/音频/特定格式文件(zip/psd/pdf) 数据

如果多了一部分内容 xxxx({…数据内容…}) 不是完整的json数据格式
完整json格式

  • {…数据内容键值对形式…}
  • [{键值对},{键值对}]
3.解析数据

提取我们需要的数据内容

返回响应数据: mtopjsonp8({…数据内容…})

  • 直接通过正则匹配相关数据 (提取评论 昵称…)

  • 通过正则提取完整json数据 -> 转成json字典数据, 根据键值对取值提取数据内容

正则表达式简单使用

re.findall(‘匹配的数据’, ‘数据源’) 表示找到所有你想要的数据,从什么地方, 去匹配什么数据。

4.保存数据

把提取的数据保存表格文件

# 导入csv模块 import csv # 创建文件对象
f = open('data.csv', mode='w', encoding='utf-8', newline='') # 字典写入方法 fieldnames根据你提取数据进行修改
csv_writer = csv.DictWriter(f, fieldnames=['昵称', '评论时间', '产品', '评论'])
# 写入表头 csv_writer.writeheader() """
中间发送请求获取解析代码内容
"""
# 提取的数据内容
dit = {}
# 写入数据 
csv_writer.writerow(dit) 
print(dit)
5.批量采集数据

分析请求链接/参数变化规律

t: 时间戳 -> time模块获取当前时间戳
sign: 加密参数
data值pageNum: 页码

sign加密参数逆向分析

1.通过开发者工具搜索, 定位加密位置

2.对于疑似加密位置, 进行断点调试分析

2.1重新进入评论页面, 查看返回值

可视化词云图

代码展示

import pandas as pd
import jieba
import wordcloud
 
 
# 读取csv文件
df = pd.read_csv('data.csv')
# 获取评论内容
#Python学习交流裙
content = ' '.join([i for i in df['评论']])
# 分词处理
string = ' '.join(jieba.lcut(content))
# 配置词云图
wc = wordcloud.WordCloud(
    width=1000,
    height=700,
    font_path='msyh.ttc',
    stopwords={'了', '用', '还', '也', '都'}
)
# 传入词汇
wc.generate(string)
# 导出词云图
wc.to_file('cy.png')
print(string)

效果展示


感谢阅读,关注收藏不迷路~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值