龙空技术网

一步步教你怎么打造微信公众号历史文章爬虫

不止技术流 141

前言:

现在看官们对“爬虫 公众号文章”可能比较关心,我们都想要知道一些“爬虫 公众号文章”的相关内容。那么小编在网上网罗了一些对于“爬虫 公众号文章””的相关资讯,希望大家能喜欢,我们快快来学习一下吧!

开篇语:

邓爷爷曾说过:不管黑猫白猫,逮到耗子就是好猫。不管我是凑的还是笨办法堆出来的,确实把批量导出微信公众号所有历史文章的这个功能给做出来了,而且还运行了大半年了,经历了几千个各式各样类型公众号的检验,还都能正常工作。所以自认为与大家分享的知识会帮到一部分朋友,至少能带来点启发(自信还是要有的,要不还咋写

)。当然我也深知我这种现学现卖做出来的产品会有许多待完善的地方,也请大牛不吝指教。

友情提醒:

虽然乔布斯说过每个人都应该懂点编程知识,而且本文确实是想授人以渔,但我还是想强调不是每个人想吃鱼的时候都得现去钓鱼,所以如果您根本不是做技术的或者看完觉得技术难度较大或者只需要保存一两个号,不妨直接找我帮你搞,毕竟时间也是成本。

该系统大致分成这么几步:

1、公众号所有历史文章链接的获取。

2、单篇文章原始HTML的下载,包括文字、图片、css等内容。

3、文章批量下载、管理。

4、HTML转换成PDF。

5、后续有新文章时的更新。

6、基于此系统的扩展功能。

不着急,咱分几篇慢慢写。

第一步,历史文章链接的获取,这是最难也是最重要的一步。

方法:安卓模拟器/安卓真机 + Fiddler/Anyproxy 等抓包工具。

再具体来讲,初级办法是在手机上通过模拟按键的方式不停加载文章列表,不停抓包,这是完全模拟人工操作,缺点是比较慢,必须按照文章发布顺序倒序依次获得所有数据,其间有可能出各种各样卡住的问题(其实好的程序本来就要应对各种异常情况)。

稍高级点的是抓包拿到的手机向微信服务器请求文章列表时发送的请求网址数据,再用程序模拟出所有的请求网址,一一发给微信服务器,并获得相应的返回数据。这种方法的优点灵活性强,可以获取特定索引次序的文章(比如第100到120篇文章,但不能获得特定时间段的,只能是大体估计时间段。)坏处是难度大,而且如果没做好伪装有可能被微信发现你是爬虫带来封号。(本文中提到的封号,是指微信官方会封锁该微信号24小时内读取任意公众号文章的功能,正常的聊天并不受影响,过了24小时会恢复正常,但如果被封的次数多了也许会处罚从重哦。)

上文提到的这些方法其实都是模拟客户端向微信服务器请求数据,一定要注意控制好请求频率,间隔太短的话很容易被屏蔽。当然还有更高级的,通过修改请求网址中某些key的值来获得高级权限,可以以近乎不限速不限量的速度获取大量数据,不过这个门槛相当高而且没人会公开,如果有谁有这方面的信息欢迎分享。拿不到也不要沮丧,用我提供的普通玩法就足够了。

链接获取之后还要保存到数据库,量不大的话保存到excel中也行,至于都要保存什么数据,仔细看看返回的Json数据格式就可以了,不过需要注意编码问题。

2、单篇文章的下载,各种编程语言都有成熟的请求网页内容的库,一定要把自己伪装成浏览器,可别傻傻告诉微信我是爬虫我来爬你了(那样微信爸爸会啪给你一巴掌再啪把门一关不让你爬了)。网页html下载下来后解析出里面的图片,再挨着下图片就可以了。为了方便管理图片可能需要一个专门的images文件夹去保存,注意修改相对路径。我在多处看到有人说微信的图片不好爬,不过我一直没遇到过啥问题,如果你遇到了不妨提出来交流下。

今天就先前两步吧。以前净看别人的技术教程了,今天第一次写教程,不知道深度和详细性是否合大家的味口,欢迎留言给我。

另外本文我会同步发布在多个自媒体平台上,而有的平台的文章发布之后是不允许修改的,所以文章的最新版本会统一更新在我的自有博客上。您可以通过点击本文左下角的“阅读原文”直达。

最后,有导出需求的可以直接找我,求赏口饭吃啊。

标签: #爬虫 公众号文章