目前市面上讲解爬取微信公众号文章的方法有很多,但很多方法都是不可用的,也抓取不到阅读数,和点赞数,而且教程繁杂,都是抄来抄去,本方案是经过多次实操,总结出来的可执行的方案,而且简单可操作,本教程只讲干货。
首先先要安装好所需要的环境 1.node.js + anyproxy 安装
1.1node.js安装
下载Node.js,打开官网下载链接:https://nodejs.org/en/download/ 我这里下载的是node-v6.9.2-x64.msi,如下图:
下载完成后,双击“node-v6.9.2-x64.msi”,开始安装Node.js,一直点next即可。主要注意的是Node.js默认安装目录为 "C:Program Filesnodejs" , 你可以点击change 修改目录,一般我都安装在"D:Program Filesnodejs"下。
安装完成后,检测PATH环境变量是否配置了Node.js。点击开始=》运行=》输入"cmd" => 输入命令"path",看输出 结果中是否有了node的安装目录。
最后测试一下node是否安装成功。
点击开始=》运行=》输入"cmd" => 输入命令"node -v" 和 “npm -v”,显示如图结果,表示安装成功。
1.2 anyproxy安装
点击开始=》运行=》输入"cmd" => 输入命令"npm install -g anyproxy"安装完成后,输入命令"anyproxy -i" 启动anyproxy。
打开浏览器输入localhost:8002,打开anyproxy界面。
2.手机模拟器安装
模拟器我试了几种,觉得MuMu模拟器算是比较好用的,网易出品,算是有一定质量保障,下载地址:http://mumu.163.com/,大家去官网下载安装即可。
3.网络配置、及证书安装
首先查看本地IP是多少,点击开始=》运行=》输入"cmd" => 输入命令"ipconfig",查看自己的IP是多少,如图
然后打开模拟器上的浏览器,输入你查到的IP:8002。如图:
点击ROOTCA,安装证书
模拟器上,点击设置下,WLAN,配置代理
4.模拟器上安装微信
通过MuMu模拟器上的应用中心,安装微信。
电脑端,打开浏览器,输入localhost:8002,打开模拟器端微信,访问任意公众号,查看电脑端浏览器,就可以看到微信请求的数据包了。
环境准备完之后,下面我们就开始分析接口与相关重要的参数。
首先我们要说一下几个重要的参数
- __biz : 每一个公众号一个,唯一的id
- mid : 是图文消息id,也就是每篇文章的唯一id
- idx : 是发布的第几条消息,1就代表是头条位置消息
- sn : 是一个随机加密串,对于一篇图文消息是唯一的
- wap_sid2 : cookie中,公众号文章权限,一个公众号一个,四小时一变
- appmsg_token : 是动态的,每3.5个小时一变
下面说一下几个重要的接口
抓取公众号文章,首先需要一个入口,很多文章都是从旧文章列表入口开始。获取第一页的html,取第 16 script标签中 msgList变量的值,得到第一页的内容,然后再通过接口请求json数据获取其它页面的数据。再加上获取点赞、在看数接口,整个过程需要请求三个接口。
其实爬取整个流程,是可以优化的,我们可以把第一个、第二个接口合并,只需要两个接口,就可以完成公众号文章列表、点赞数在看数的抓取。
获取列表数据接口,通过修改offset控制页数,其中count不能大于10,也就是说一页中最多也就是十条。
"/mp/profile_ext?action=getmsg&__biz="+__biz+"&f=json&offset="+offset+"&count=10&appmsg_token="+appmsg_token+"";
第二个接口,获取点赞数,在看数接口,注意这是个POST请求这个接口中,
"/mp/getappmsgext?f=json&__biz="+__biz+"&appmsg_token="+appmsg_token+"&fasttmplajax=1";
需要上传request body
"mid="+mid+"&sn="+sn+"&idx="+idx+"&is_only_read=1"
通过这两个接口就可以获取任意公众号所有文章,以及其点赞数在看数等,这里要注意的就是列表请求最好是间隔2秒,点赞数接口间隔2秒,否则微信会封号,无法访问公众号,其它功能不受影响,24小时自动解封。
微信公众号文章批量采集,到此就讲完了。有问题可以留言讨论~~