学校部门要求计算学校公众号的wci指数,而这首先需要获取公众号一段时间内消息的阅读量、点赞数、在看数、以及是否为头条。学校历年都是让学生人力去统计,我试着人力统计了一下,真是又费时又费力,于是尝试整一个爬虫用来获取这几个指标。
参考文章:爬取微信公众号发布的所有文章(包括阅读数,在看数,点赞数)_爬取微信公众号文章-CSDN博客
微信无法像浏览器一样直接通过控制台查看网络通信,因此需要抓包软件,这里使用的是Fiddler,其他抓包软件,类似burpSuit,应该也可以
本次抓包的关键在于:在哪里可以抓到包?
微信内容的展示分两处,如图
左边的是在微信内置浏览器中展示,而右边的是在微信app的框架中展示
其中,左边展示的内容是可以抓到包的,而右边不行(可能也只是我的技术没到)
经过我的实验,所有公众号消息列表的url的格式为
根据此值重构链接,然后把链接发送给微信好友,就可以在内置浏览器中打开公众号的消息列表了
然后就可以开始研究抓哪些包了
“3”:第一次打开时的整个界面,包括网页框架以及公众号的前十条内容
“7”:作用不详,据其url中的action为“urlcheck”,猜测其是检测该url是否正确
“8”,“38”,“44”,“90”:json文件,其中部分包含文章信息,部分不包含
观察包含文章信息的json文件的url,发现样式比较统一,并且可以直接使用浏览器进行访问 @
抓取多个公众号的多条消息,大致分析出url的如下信息
1.使用GET方法,链接为/mp/profile_ext
2.具有值的参数如下
根据以上信息,只需获取一个公众号消息的原始请求,就可以在配置后使用爬虫获取其所有的历史消息
接着分析这个json文件
比较重要的有
以上是对于消息列表的处理,接下来是对单个消息的处理,
打开任意一篇公众号的文章,抓包,发现对于点赞、观看、在看数来源于/mp/getappmsgext的链接
这个请求使用的是post方法,在url中的有意义参数有
由于是post,所有除url的参数外,还需要注意param,参考文章爬取微信公众号发布的所有文章(包括阅读数,在看数,点赞数)_爬取微信公众号文章-CSDN博客中提到的请求设置方式,再加上相关的cookie和data
基于以上信息,就可以开始着手写爬虫了