利用搜狗微信入口制作一个微信文章爬虫api

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

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


        其中,web微信只能被动接受公众号消息,不能主动去查阅微信公众号历史消息。由此,可以通过itchat,wxpy等web微信库来编写一个机器人,实时接收微信推送,适用于需要实时更新微信推送消息的场景需求。但此方法有个弊端,首先要保证手机上自己的微信不经常断网掉线,才能使机器人长时间在线。再者,用这些第三方库长时间登陆或频繁的登陆web微信,或被封号,要是微信小号很多,可以尝试这个方法。

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

        搜狗微信入口与其他相比显得友好的多。应该是微信搜索引擎和搜狗有合作吧,所以搜狗能有微信搜索的入口。搜狗微信有两个类型,一是通过关键词搜索文章,二是通过关键词搜索公众号,并且搜索到的微信号只能获得其最近十条消息推送(即意味着无法通过此方法爬取指定公众号历史消息)。这个方法还是有一些应用场景的,比如像获取关于某个关键词的大量文章,比如做一个定时任务,或间隔一定时间去爬取某个微信公众号最新十条推送来获取其最新推送,这一点上,比web微信要好得多,搜狗微信的更新也是实时的,直接和mp.weixin.qq.com相关联。

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


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

    利用搜狗微信写一个爬虫接口,代码很简陋,只有两百行不到的代码。(这里我还得吐槽一下,python写多了,总有一种自己很叼,编程很简单的错觉,几行代码就能实现很厉害的功能,这时候需要去写写CPP冷静一下,让自己知道什么是真正的编程。)

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

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

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

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

请求url为http://weixin.sogou.com/weixin

请求类型为 Get

请求参数如上图

发现将请求参数tyepe 改成 2,就是获取关键字搜索文章的结果

比较简单

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共用。

代码放在 github仓库,有兴趣可以看看

放两张使用截图

(ArticleAPI)
(AccountAPI)

结语:

这么简陋的一个爬虫称其为api,我实在是有点胆大妄为了。小打小闹而已,难登大雅之堂,需要向各位大佬虚心学习。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,539评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,911评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,337评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,723评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,795评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,762评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,742评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,508评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,954评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,247评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,404评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,104评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,736评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,352评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,557评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,371评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,292评论 2 352

推荐阅读更多精彩内容