数据获取 情感分析 词云图展示

目录

  • 1. 数据获取部分
    • 实验环境
    • 数据获取目标
    • 抓包
      • PC端和移动端分析
      • 抓取到的目标链接
    • 分析评论信息存储位置
    • 爬虫结果
  • 2. 情感分析部分
    • 数据准备
    • 主要代码
    • 效果
  • 3. 词云图部分
    • 主要代码
    • 效果

1. 数据获取部分

实验环境

Requests、json、io、sys、re、time、csv

数据获取目标

数据获取 情感分析 词云图展示_第1张图片

抓包

PC端和移动端分析

PC端抓包后,发现参数过多。
从移动端某博抓取url,发现加密参数较少方便入手
爬像新浪某博这样的大网站,不用想就知道不登录肯定是爬不了多少数据的(事实就是不登录的话只能爬第一页的评论数据)。
所以我们先抓取到cookie进行保存:
数据获取 情感分析 词云图展示_第2张图片

抓取到的目标链接

这里只提取了我想要爬取的四个目标url:

https://m.weibo.cn/1653196740/4595525837399095
https://m.weibo.cn/2027363802/4319350444018706
https://m.weibo.cn/2602644737/4638484377896654
https://m.weibo.cn/2337348632/4638209580207301

界面如下:
数据获取 情感分析 词云图展示_第3张图片

分析评论信息存储位置

首先自动加载评论数据时抓取ajax请求,发现response有unicode编码的数据,截图如下:
数据获取 情感分析 词云图展示_第4张图片

通过preview视图中发现,这些编码正式我们想要的评论数据,截图如下:
数据获取 情感分析 词云图展示_第5张图片
3. 那么如果获取自动加载的下一页的评论信息呢?抓取下一页的评论数据url分析
第一页的url为:
在这里插入图片描述

第二页的url为:
在这里插入图片描述

结果,请求中多了一个max_id和max_id_type

继续分析两者request和response发现:
第一页返回的json信息中包含的max_id和max_id_type正是下一页所需要的url参数。
数据获取 情感分析 词云图展示_第6张图片
接下来就可以开始我们的爬虫了。

爬虫结果

爬取结果如下,只爬了1W条左右:
数据获取 情感分析 词云图展示_第7张图片

2. 情感分析部分

数据准备

  1. BosonNLP_sentiment_score.txt 词语评分表
  2. degree.csv 程度副词表
  3. not.csv 否定词表
  4. stopword.txt 停用词表
    篇幅限制,读者可以自行百度这些表的含义
    数据获取 情感分析 词云图展示_第8张图片

主要代码

数据获取 情感分析 词云图展示_第9张图片
利用pandas,jieba来计算每条评论信息的分数,主要代码如上

效果

代码会生成两个文档:
数据获取 情感分析 词云图展示_第10张图片
一个是pos积极评论文档,一个是neg消极评论文档
neg文档如下:
(可以通过评论ID,找到原评论)
有部分误差,后期还可以通过调整评分阈值进行优化
数据获取 情感分析 词云图展示_第11张图片

pos文档如下:
数据获取 情感分析 词云图展示_第12张图片
这个基本是没什么误差的

3. 词云图部分

主要代码

数据获取 情感分析 词云图展示_第13张图片

效果

数据获取 情感分析 词云图展示_第14张图片

你可能感兴趣的:(小项目实战,json,前端,python)