1. 数据获取部分
实验环境
Requests、json、io、sys、re、time、csv
数据获取目标
抓包
PC端和移动端分析
PC端抓包后,发现参数过多。
从移动端某博抓取url,发现加密参数较少方便入手
爬像新浪某博这样的大网站,不用想就知道不登录肯定是爬不了多少数据的(事实就是不登录的话只能爬第一页的评论数据)。
所以我们先抓取到cookie进行保存:
抓取到的目标链接
这里只提取了我想要爬取的四个目标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
界面如下:
分析评论信息存储位置
首先自动加载评论数据时抓取ajax请求,发现response有unicode编码的数据,截图如下:
通过preview视图中发现,这些编码正式我们想要的评论数据,截图如下:
3. 那么如果获取自动加载的下一页的评论信息呢?抓取下一页的评论数据url分析
第一页的url为:
第二页的url为:
结果,请求中多了一个max_id和max_id_type
继续分析两者request和response发现:
第一页返回的json信息中包含的max_id和max_id_type正是下一页所需要的url参数。
接下来就可以开始我们的爬虫了。
爬虫结果
爬取结果如下,只爬了1W条左右:
2. 情感分析部分
数据准备
- BosonNLP_sentiment_score.txt 词语评分表
- degree.csv 程度副词表
- not.csv 否定词表
- stopword.txt 停用词表
篇幅限制,读者可以自行百度这些表的含义
主要代码
利用pandas,jieba来计算每条评论信息的分数,主要代码如上
效果
代码会生成两个文档:
一个是pos积极评论文档,一个是neg消极评论文档
neg文档如下:
(可以通过评论ID,找到原评论)
有部分误差,后期还可以通过调整评分阈值进行优化
pos文档如下:
这个基本是没什么误差的