Python获取“双十一”商品评论,做词云分析,一个简单的案例教学

[复制链接]
发表于 2022-11-2 16:55:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
前言

环境使用


  • Python 3.8
  • Pycharm
模块使用


  • requests
  • jieba 结巴分词
  • wordcloud 词云
数据来源分析

明确需求

  • 采集数据是什么东西? 通过那个url地址得到想要数据的内容
  • 抓包分析: 浏览器自带工具 --> 开发者工具
    I. F12 或者 鼠标右键点击检查 选择 network 点击第二页
    II. 复制评论内容, 在开发者工具里进行搜索, 可以直接找对应评论数据包
https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100029079354&score=0&sortType=5&page=1&pageSize=10&isShadowSku=0&rid=0&fold=1
对于本篇文章有疑问的同学可以加【资料白嫖、解答753182387】

数据获取代码实现

发送请求
  1. url = 'https://club.jd.com/comment/productPageComments.action'
  2. # 请求参数 --> 字典数据类型 构建完整键值对
  3. data = {
  4.     # 'callback': 'fetchJSON_comment98',
  5.     'productId': '100029079354',
  6.     'score': '0',
  7.     'sortType': '5',
  8.     'page': page,
  9.     'pageSize': '10',
  10.     'isShadowSku': '0',
  11.     'rid': '0',
  12.     'fold': '1',
  13. }
  14. # 模拟浏览器 --> headers 请求头
  15. headers = {
  16.     'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
  17. }
  18. # 发送请求 requests 模块 get 方法<请求方式>
  19. # 等号左边: url/params/headers 属于get函数里面形式参数 等号右边 url/data/headers 传入进去参数/变量
  20. response = requests.get(url=url, params=data, headers=headers)
复制代码
获取数据, 服务器返回响应数据

  • response 响应对象
  • response.text 获取响应文本数据
  • response.json() 获取响应json字典数据
解析数据

字典数据类型: 通过键值对提取数据内容
根据冒号左边的内容[键], 提取冒号右边的内容[值]
  1. # for循环遍历 把列表里面元素一个一个提取出来
  2. for i in response.json()['comments']:
  3.     content = i['content']
  4.     print(content)
复制代码
保存数据
  1. with open('口红评论.txt', mode='a', encoding='utf-8') as f:
  2.     # 写入数据内容
  3.     f.write(content)
  4.     f.write('\n')
复制代码
词云代码
  1. # 导入结巴分词  jieba 模块国人开源的
  2. import jieba
  3. # 导入词云
  4. import wordcloud
  5. # 导入读取图片
  6. import imageio
  7. # 读取图片内容
  8. py = imageio.imread('img\\矢量图5.png')
  9. # 读取文件 返回对象 mode 方式模式 r 读 a追加写入保存 mode 默认是r
  10. f = open('口红评论.txt', encoding='utf-8')
  11. # 读取内容
  12. text = f.read()
  13. # 分词 --> 把完整一句话分成很多个单词
  14. string = ' '.join(jieba.lcut(text))
  15. # 词云图 配置
  16. wc = wordcloud.WordCloud(
  17.     width=1000, # 宽
  18.     height=700,  # 高
  19.     font_path='msyh.ttc', # 词云字体
  20.     # 设置停用词, 把没有词汇, 停用
  21.     stopwords={'的', '了', '很', '也'},
  22.     # 设置背景颜色
  23.     # background_color='pink',
  24.     contour_width=5,
  25.     contour_color='pink',
  26.     mask=py
  27. )
  28. # string 数据传入进去
  29. wc.generate(string)
  30. # 导入词云图
  31. wc.to_file('有形状的词云黑.png')
  32. print(string)
复制代码

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表