利用搜狗陌陌自制一个简易微信公众号爬虫接口

优采云 发布时间: 2020-08-18 11:12

  利用搜狗陌陌自制一个简易微信公众号爬虫插口

  微信公众号现已成为主流的一对多媒体行为活动,也是现今互联网内容生产不可忽略的一股力量。

  在此基础上,微信公众号爬虫显得太有价值,对内容生产型公众号进行数据挖掘可以得到好多有意思、有价值的信息。就我所知,可用于微信公众号爬虫的方法主要有以下几种:web陌陌,手机客户端抓包,搜狗陌陌入口,appium自动化测试,Xposed框架等。

  手机客户端抓包,利用fiddler或charles等抓包工具,算是一个比较主流(我自己觉得的orz),效率较高的方式,可以快速的抓取微信公众号信息和历史消息,此方式也有隐忧:cookies失效快,半天差不多的时间吧,有针对性的去抓取某几个公众号的历史消息也是可以的。要想通过模拟登录陌陌手动获得cookies,好像很难的,小弟浅薄,无法实现,貌似陌陌登录是tcp协议?

  appium自动化和Xposed框架我了解不多。appium类似于selenium,在移动端做自动化测试的,模拟点击即可。Xposed框架就有很多可以搞的了,Xposed可以在不更改apk的情况下做到一些额外的功能,爬虫自然是可以的,除此之外可做到以手动抢红包,自动回复机器人,修改陌陌步数等等骚操作。

  写爬虫也有一段时间了,个人觉得实现爬虫不仅反反爬,爬虫效率外,还有一个很难实现的地方就是爬虫的稳定性,健壮性,需要考虑到好多异常情况,以及合理有效的异常处理,在这一点上,我认为我还须要向各大爬虫大鳄学习。(感觉自己瞎扯了很多,还没有开始我的正文(orz),感觉嫌我啰嗦的大鳄请别生气。)

  利用搜狗陌陌写一个爬虫插口,代码太狭小,只有两百行不到的代码。(这里我还得吐槽一下,python写多了,总有一种自己太叼,编程很简单的错觉,几行代码能够实现很厉害的功能,这时候须要去写写CPP冷静一下,让自己晓得哪些是真正的编程。)

  以下记录下我写这个爬虫插口脚本的过程:

  1. 页面恳求剖析(以公众号搜索为例):

  可以看见第一个http请求包就是我们想要的结果,查看其query string,如下:

  看起来很简单的不是,我们得到以下几个信息:

  2. 模拟页面恳求:

  我们直接用 url, 请求参数params, 还有谷歌浏览器的 user-agent 请求,发现可以成功的获取到我们想要页面的源码,接下来我们获取搜索结果下的第一个公众号即可(这意味着须要确切的给定公众号名称,太过模糊有可能获取到与其类似的公众号结果)。

  3. 分析页面:

  先确定爬取思路,第一步获取微信公众号链接,再通过该微信公众号链接获取其近来十条推送的相关信息,包括标题,日期,作者,内容摘要,内容链接(事实上,我们发觉有了陌陌推送链接以后才能太轻松的获取其推送主体内容,但不包括点赞数和阅读数,这几个数据只能在陌陌手机端能够查看,如果有机会的话,下次记录下自己手机陌陌抓包爬虫的过程)。

  于是第一步我们获取公众号链接:

  这里我们直接使用正则表达式提取即可(这么简单的就不用xpath,bs4了,依赖标准库和第三方库还是有所不同的。)

  (抱歉被水印堵住了orz,换一张。)

  第二步按照微信公众号链接获取近来十条推送信息:

  (我只写了一篇orz,以后多加油。)

  ctlr U 查看网页源码,发现原创信息都置于一个js变量上面。

  好办,继续正则提取,将json格式的字符串转换成python上面的字典,有两种办法,第一种是用 json.loads 方法, 第二种是用外置的 eval方式,这两种方式有些区别,比如说单冒号和双冒号, json格式中使用的是双引号, python字典通常是单冒号。

  OK,获得原创推送信息数据了,但这上面有很多我们用不到的信息,将其剔除一下,值得一提的是,datetime的值是一个timestamp,我们须要将其转化为直观的时间抒发。

  到此,关于微信公众号的爬虫差不都就解决了,接下来须要将其封装为类。主要部份代码如下。

  另外,关于关键词搜索文章的爬虫插口我也一并写了,AccountAPI,ArticleAPI,其父类是一AP类,API类有query_url, params, headers, _get_response, _get_datetime等变量和技巧,供于AccountAPI,ArticleAPI共用。

  代码放到

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线