会员登录|免费注册|忘记密码|管理入口 返回主站||保存桌面
数据采集-数据抓取-java-php-go-Python-爬虫-全自动-微信公众号文章阅读量点击量-多个公众号-实时更新
2024-12-20IP属地 湖北2

数据采集-微信公众号文章
今天是个值得纪念的日子
优点
现有网络流传采集方法
具体实现
使用软件
实现流程
思路
使用流程
请求分析
关键字段
踩过的坑
实现代码
总结
今天是个值得纪念的日子
今天开通了博客,不知道写点什么,感觉写专业技术吧,我一个初到职场的菜鸟,肯定是不能和各位大佬相其并论,想了想还是写微信公众号文章获取,目前这个网上有很多教程,也可以找到但是都是大片一律,看完我的方式你绝对会有不一样的收获。

优点
使用编程语言没有限制,php,java,Python,go等等,只要你会任何一种编程语言,对于我们后端开发者都可以学会。
全自动,程序启动好,剩下的就是等待结果。
可以实时更新最新文章和阅读量。
方便不用安装过多的软件。
效率高,可以不停的抓取。
可以获取文章,阅读量。
可以进行多个公众号,目前我在跑300多个。
不用使用手机,只需要一台电脑。
微信号不用关注太多公众号。
现有网络流传采集方法
微信搜狗:获得文章,这样是可以,但是想要获取全部历史文章那就有点难度了,在我这里废弃,毕竟也是第三方平台。
微信公众号:网上都是使用手机端抓取,下拉一点一点加载保存数据,最后解析,这种方式是的可以进行获取,我不能反驳,我已经尝试过了,但是这种缺点很多,对于新的公众号是没有问题的,采集全部,但是呢,对于想要获得最新的,就有点不科学了。
可以去网上买数据,如八爪鱼等,如果有钱,那就当我没说,请略过。
如果你的企业足够大,和腾讯有合作,可以让腾讯开接口。
具体实现
使用软件
电脑版的微信
按键精灵
fiddler
php或java等其它语言
实现流程
思路
所有前端都是通过请求获得数据,万变不离其宗,只是对于不同的公司有自己处理数据的安全性方式,做了许多限制,校验,一般小的公司可能没有这么严格,啥校验都没有,接口暴露,可以任意获取数据。但是当你爬公众号文章的时候,微信公众号文章也就是这样,请求接口这个就是我获取数据方式和网上现有的不一样。
那肯定有人会问了,既然可以通过接口进行获得,那不是可以不用fiddler呢,答案是不可以,由于腾讯的一些请求校验,有几个重要参数必须通过首页获取,这时候fiddler就派上用场了。
使用流程
1.按键精灵做定时任务启动脚本。
2.fiddler公众号自动跳转和抓取公众号主页的链接和html内容
3.通过主页和链接获得需要的参数,接下来就可以随意获取。

请求分析
以下是我对某一公众号抓取接口进行分析,你也可以通过fiddler分析

主页链接
可能很多人会很奇怪, 电脑上没有公众号主页啊,的确,如果你正常浏览是没有,根本找不到。但是同样会发现手机端有啊。那为啥不试试获得手机端通过抓包获得链接在电脑端打开呢最后等到一个链接
:http://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzA4ODA3NDA5Mw==
主页数据,用fiddler来获得保存主页数据,解析可以获得。
需要注意的是这个请求链接上和抓包获得链接是不一样的。从主页上可以获得必要的参数,方便在刷新页使用。

文章刷新页接口
: http://mp.weixin.qq.com/mp/profile_ext?action=getmsg&__biz=MzA4ODA3NDA5Mw==&f=json&offset=20&count=10&is_ok=1&scene=&uin=MjQzNTgyMTE2MA%3D%3D&key=668552987085ac5a9101d790677bd815151c8a5947fbd5da4c9f83a2d4e09e0310f5a221bb94e101d02940e59fa1e75ac55295d64354583c8e2426e33dae69a44c0a078ace63b9a507c3be3ea965361e&pass_ticket=DLllSj2aEFKYzzPh1isTbYiJ2aggBYe6Rk8%2BdMBlMAAWmxvt7UWZlPMrWXOcaiD4&wxtoken=&appmsg_token=1062_AHviHcwQDOXOLqqP_wrmMK4JioIrnTgbZKh-wQ~~&x5=0&f=json
从链接分析很容易等到,其实我们只要换一些参数值,就可以获得所有数据。完全可以进行拼接获得
需要注意的几个参数
appmsg_token:这个参数是在主页中可以获得
uin key pass_ticket:这三个参数在主页链接上有
offset:是变化的,不是固定的,常见的是10,可以从上一次返回值获得。
阅读量点赞量接口
阅读量点赞量的参数,需要每一篇文章进行抓取
目前链接如,我没有测试过: http://mp.weixin.qq.com/mp/appmsgreport?action=page_time_5s&__biz=MzA4ODA3NDA5Mw==&uin=MjQzNTgyMTE2MA%253D%253D&key=aaff4c22caa83a74a1dbdf2bcd7e2c4a8b67e261462a45c1127d79fc1da13dd4876b578611c250f3290eb915a91ed09140854c83addd3311c5d35b9543e2c4cad0e56b254b2ae878385e28b1e98232ce&pass_ticket=DLllSj2aEFKYzzPh1isTbYiJ2aggBYe6Rk8%25252BdMBlMAAWmxvt7UWZlPMrWXOcaiD4&wxtoken=777&devicetype=Windows%26nbsp%3B10%26nbsp%3Bx64&clientversion=62090070&__biz=MzA4ODA3NDA5Mw%3D%3D&appmsg_token=1062_hnUCfMVE4kThWQPZfyZletAyotvdXJILrmMGsk65QakKztRRJMkwfAiv77K7170lBQvlrNMElh4Gvko0&x5=0&f=json
我一直使用的链接:https://mp.weixin.qq.com/mp/getappmsgext?f=json&mock=&uin=MjQzNTgyMTE2MA%253D%253D&key=aaff4c22caa83a74a1dbdf2bcd7e2c4a8b67e261462a45c1127d79fc1da13dd4876b578611c250f3290eb915a91ed09140854c83addd3311c5d35b9543e2c4cad0e56b254b2ae878385e28b1e98232ce&pass_ticket=DLllSj2aEFKYzzPh1isTbYiJ2aggBYe6Rk8%25252BdMBlMAAWmxvt7UWZlPMrWXOcaiD4&wxtoken=777&appmsg_token=1062_AHviHcwQDOXOLqqP_wrmMK4JioIrnTgbZKh-wQ~~&x5=0&f=json
需要注意的几个参数
appmsg_token:这个参数是在主页中可以获得,需要urlencode
uin key pass_ticket:这三个参数在主页链接上有,uin需要两次urlencode,key不需要,pass_ticket需要一次urlencode
offset:是变化的,不是固定的,常见的是10,可以从上一次返回值获得。
请求返回:read_cnt阅读量,like_cnt点赞量
关键字段
_biz:公众号的唯一,获取方式抓包,文章,微信搜狗等都可以拿到
appmsg_token:有效期30分钟,也就是说,必须30分钟获取一次新的
offset:是变化的,不是固定的,常见的是10,可以从上一次返回值获得。
uin:和_biz是一个值,区别是uin 是_biz的encode的结果。
踩过的坑
容易封号,我的方法是开多台虚拟机,按键精灵设置下循环次数。
接口请求频率不要请求太快,很容易封号,我基本上是设置为4秒一次,一定要休眠。
有时候会解析到Unicode。
注意过滤微信表情。
返回值有的还有Unicode编码的字符。
文章的类型,有图片类型也有视频类型还有文本类型,subType字段9是文本。
2013-05-24 以前的是没有阅读量,点击量。
代码运行时间不能过短。
token有效时间30分钟,所以必须半个小时获得一次。
请求的链接许多需要urlencode,上面已经提到了。
每一个微信号有请求限制,达到上限会封号一天,我设置的是一个微信号使用2个小时。
实现代码
因为我使用框架是我们公司自己搭建的,再加上写的代码太差了怕您笑话,请原谅不能提供,还是想要可以找我,但是我也相信,你看到我的思路也可以自己写出来。
对于一个it人员,重要的是获得到了经验,方法,而不是成为代码的搬运工。