1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 【分享】如何用Pytho抓取微信公众号文章(包括阅读数 点赞数)

【分享】如何用Pytho抓取微信公众号文章(包括阅读数 点赞数)

时间:2024-04-11 19:11:08

相关推荐

【分享】如何用Pytho抓取微信公众号文章(包括阅读数 点赞数)

本小白的第一篇技术分享博客,啊哈哈!!(石乐志)

真好,直接切入正题吧,目前来讲微信公众号文章主要有以下三种渠道可以获取,对应有三种抓取方式,如下~~

搜狗微信点击跳入,这算是对咱reptiler最友好的方式了(用requests+xpath就可以很轻松抓到),但是但是,点进去结果没有阅读量评论点赞等等关键要素,那还抓个屁@_@!!~~而且在不登录的情况下还是只能抓10篇而已嘛。我弱弱的试着抓了下,发现数据还是很好拿到的,不过没有代理的童鞋就是要费点心思了,因为你会遇到万恶的验证码,啊哈哈!微信公众平台点击跳入,进入平台需要注册绑定微信,据说微信公众平台也有一种很鸡贼的方式获取到文章,就是编辑页面多了个转载功能,可以直接搜索公众号文章,从接口就可以获取到文章内容,不过貌似不能按公众号搜索,如下:

我就呵呵了,TX一点都不大方嘛,而且好像没阅读量这些数据,没什么价值也就没怎么进去看了。随便扔个链接有兴趣可以进去看看。/d1240673769/article/details/75907152Fiddler抓包微信客户端(重点要来了),是的这是目前为止最符合我需求的渠道了,貌似也只有微信客户端有点赞,阅读量了。

另起一行,首先呢你得下载个Fiddler,以及配置Fiddler,下载链接:/download/fiddler

安装好后点击菜单栏的Tool->Options设置一波,差不多下面的样子吧:

然后好像还需要装一个该死的证书。微信的接口都是https,不装是抓不到数据的,具体方法我忘了,有时间想起来了再贴进去,应该不难。配好后你会看到很多奇奇怪怪的请求,是的fiddler已经在工作了,可是链接太多了看的眼花缭乱的,这时候我们需要过滤掉一些没用的信息,像这样:

Ok,这一步终于结束了。

下来就是和微信有关的东西了,首先手机电脑端微信都可以抓,方便起见,用win10微信客户端为例。打开微信扫码登录,麻溜的进入公众号随便点开一片文章,此时你的fiddler应该是打开的状态,那么你会看到一些mp.的https请求,如下所示:

那么恭喜你,你成功抓到了数据,否则那就什么都没有。

随意点开一个请求,如下:

这特么不就是文章内容么,对应网页版的也是一样的,可以可以

再随意点开一个请求,如下:

等等右下角的红框内容怎么看起来这么带感呢,稍微有点常识的人应该都知道那是干嘛的,没错就是点赞数和阅读量,右上角对应的就是请求头了,哈哈哈得来全不费功夫。不过这特喵的请求url带的参数够多的:https://mp./mp/getappmsgext?f=json&mock=&uin=此处隐去敏感参数&key=f650c66250eec4fa16c59b57c5613a692ca9a75e81981e42292f2aafa4f2319a27d5c1010ecf9476ad76b8344d04bd178959a104065b590f7c2db4db499e543b17bbf858f8cbfe47380c9dbf47379d96&pass_ticket=xfXgqWYeNMqkpNmJpDKnvOlwbhiK1awDIt8SE6zeEg4LaVRqI1EfXw5duVmaMTXh&wxtoken=777&devicetype=Windows%26nbsp%3B10&clientversion=62060426&appmsg_token=983_%2BFff6DaA8iICxlfUzTIONkPmo8q7rNq4a95vDjisWwnLS3GeykhsOV77bwcUnQiOj7atgEfCjOmxL6Us&x5=0&f=json

后面还有一堆就不贴了,不过也别着急,这么长的参数肯定一大堆用不着的。果然在我多次尝试下找到了点赞阅读量接口的必要参数:

uni:用户唯一识别码,固定值

key:随机秘钥(10-30分钟的样子,好像不定长)

__biz :公众号唯一识别码,固定值

mid:可能是发布日期,固定值

sn:文章识别码,固定值

下面的参数就是固定的了,但是也是需要带的

综上所述,唯一变动的就是key了,这个key很头疼,网页版js找遍了没找到有关联的值,应该是微信客户端内置的加密方式,目前我还没找到破解的方法。好在这个key有相对较长的时间,抓小量数据足够了

那么我们就来构造这个请求,发现确实可以获取到json格式的数据,那就好办了。示例:

{"advertisement_info": [],"appmsgstat": {"show": true,"is_login": true,"liked": false,"read_num": 2853,"like_num": 14,"ret": 0,"real_read_num": 0},"reward_head_imgs": [],"base_resp": {"wxtoken": 777}}

接着只需要整合到代码里去就行了,代码下次更新放出来。到这里基本分析结束,也下班啦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。