网站调用新浪微博内容( 移动端简单抓包可以发现只要请求下图下图就能获取这条微博评论数据)
优采云 发布时间: 2021-11-17 09:00网站调用新浪微博内容(
移动端简单抓包可以发现只要请求下图下图就能获取这条微博评论数据)
Python爬取新浪微博评论数据。你有空去了解一下吗?
开发工具
Python版本:3.6.4
相关模块:
argparse 模块;
请求模块;
结巴模块;
词云模块;
以及一些 Python 自带的模块。
环境设置
安装Python并将其添加到环境变量中,pip安装所需的相关模块。
原理介绍
一. 爬虫目标
抓取某条微博下的评论数据。
二. 模拟登录
爬个像新浪微博这样的大网站,不用想,不登录就获取不了多少数据(说实话,不登录只能爬第一页的评论数据在)。
为方便起见,我们选择使用微博手机界面进行模拟登录。即:
%3A%2F%%2F
界面如下:
图片
简单抓包可以发现登录链接是:
图片
登录需要发布的数据包括:
图片
这样我们就可以愉快的编写代码来模拟微博移动端的登录了~具体代码如下:
图片
三. 评论数据爬取
这里我们以爬取胡歌最后一条微博的评论数据为例。
手机界面:
图片.gif
电脑界面:
图片
由于我们在移动端模拟登录,所以只能从移动端抓取微博评论数据。
在移动端简单抓包,可以发现通过下面的链接请求就可以获取到本微博首页的评论数据:
图片
其中id和mid是一样的,就是评论页链接的橙色粗体部分:
43408
得到的评论数据如下:
图片
第二页呢?事实上,这很简单。你可以发现通过请求下面的链接可以获得本微博第二页的评论数据:
图片
其实比第一页多了两个参数。这两个参数其实隐藏在返回的第一页的评论数据中:
图片
以此类推,第n页所需的max_id和max_id_type参数隐藏在返回的第n-1页评论数据中。
可以发现,当页面返回的max_id为0时,表示该页面是微博下评论的最后一页。
这样,我们就可以抓取到微博下的所有评论数据了!(QAQ当然前提是网站没有其他防爬措施,这显然不太可能。)
那么PC端的微博评论页面的链接是否可以转换为移动端的微博评论页面的对应链接呢?毕竟我们平时都是用电脑端的界面登录,然后看微博!
当然!
在胡歌最后一条微博评论页的PC界面上,我发现了这个:
注意:在微博PC端请求链接时,需要添加cookie信息。经测试,只需要在cookie中添加SUB参数即可。有关详细信息,请参阅相关文件中的源代码。
图片
这不是mid,所以PC端微博评论页面的链接可以很方便的转换成移动端微博评论页面对应的链接。
所以微博评论数据抓取部分的代码可以很方便的写出来:
图片
OK,完整源码完成,请参考相关文件中的使用说明
在终端运行weiboComments.py文件,命令格式如下:
图片
例如:
python weiboComments.py -u 用户名 -p 密码 -m 10(即评论数据最多可以抓取10页) -la 一条微博评论页面的链接 -t pc(输入pc/phone,用于表示是否是PC或手机微博评论页面链接)。
运行它并截取屏幕截图:
图片
数据保存在当前文件夹中,文件名是:
评论_当前时间戳.pkl。
注意:
为了避免对微博服务器造成不必要的压力,我为每个爬取的页面设置了更长的暂停时间。
数据可视化
随便画个前十页评论的词云,其他数据懒得分析了:
图片
源码见相关文件中的vis.py文件。
更多的
新浪微博相关信息
关注公众号“python工程狮子”,回复“新浪微博”即可获取。