公众号文章批量下载爬虫实战!

优采云 发布时间: 2020-08-18 19:15

  公众号文章批量下载爬虫实战!

  

  在文章列表中下降键盘,会听到有文章列表不停加载下来。我们要想办法把这种列表提取下来。

  直接看右图,正常状态下,电脑版陌陌发送恳求给陌陌服务器,微信服务器返回数据给笔记本,再显示下来。

  我们可以在二者之前插入一个代理,即图中所示的Fiddler软件,这样它可以抓取到陌陌服务器返回的信息。

  

  需要的工具叫 Fiddler ,它的官网有时会打不开,可以去搜索Fiddler4(或者去文末QQ群的共享里下)、下载、安装。然后,想使Fiddler正常工作须要进行些配置,可以先照我说的做。建议先把本文全看完了再实际操作。

  提醒一下,Fiddler虽然是一个系统代理软件,所以假如你的笔记本上正在使用其他类型的代理软件请先关闭,否则可能难以正常工作。

  打开Fiddler,按右图操作。

  

  会弹出几个窗口,都点 Yes

  

  最后是这样的,打了3个钩。点OK保存即可。

  

  配置完成了,然后点软件左下角的小方块,会显示 Capturing ,表示它此时处在可以抓取数据的状态,再点一下,恢复空白,表示暂停抓取。

  

  然后,在微信公众号的历史文章列表页往下划动,会听到Fiddler的右侧窗口有一堆数据在滚动,跟第一节中提到的chrome开发者工具太象,其实这两个的功能基本一致,只不过开发者工具只能测量到在chrome中打开的网页,而Fiddler可以测量到整个笔记本中所有的Http和Https恳求(这两种方法主要是抓网页类型数据,其实笔记本中还有其他类型的网路恳求形式,比如陌陌聊天数据用这些方法就抓取不到,另外网页版的支付宝、网银支付都用了更中级的加密技术,不用担忧。)

  点击某一行,右边会出现这一条恳求的详尽情况,与chrome开发者工具风格太象,Fiddler的功能更多更强大。

  多下拉几次,多加载一些文章,你都会发觉规律:

  每次当出现新文章,都会出现一条右图红框所示url的恳求。

  

  选中这一条,在两侧选择 JSON ,会听到一条低格的 JSON 数据,仔细看general_msg_list,貌似就是返回的文章列表,为了确定一下,可以再点 JSON 左边的 Raw 标签,看最后一行,是一串太长的json字符串,就是它了。

  

  如果把每一条恳求的返回字符串全都采集上去,便得到了所有文章的列表。而Fiddler的给力之处正在于它可以帮我们把所抓到的消息都以文本的方式保存出来。

  那么,如果一个公众号有1000篇文章,要发多少次恳求,下拉多少次能够把所有文章都列下来呢?只要你别太笨,应该起码能想到一个笨方式:不停往下拉文章列表,Fiddler便会抓取到所有的返回数据。本着先求有再求好,从简单到具象的原则,我们就先如此抓,其实,在我刚开始批量采集的最初一段时间就是如此采集文章列表的,当然不仅简单易上手还有些其他方面的考虑。

  在即将开始抓取之前,我们要先做点打算工作:Fiddler默认会把所有的经过本笔记本的恳求全都抓下来了,没必要全保存,最好能筛选一下。那我们须要的数据有哪些特点呢?仔细看一下,我们所关注的数据的网址的前半部份都是

  

  开头的,那我们就让Fiddler只保留这样的网址。

  讲到这儿,可能许多有点经验的同学认为我该介绍在Fiddler中写代码了,但是,我们不需要!让对python还似懂非懂的同学再去学JScript语言有点压力山大,我们可以巧妙得借助Fiddler自身强悍的筛选功能来搞定此事:

  看右图,在Fiddler的两侧,开启过滤功能,只显示url中带有指定关键字的恳求,注意上面不要带https,填写完以后会手动保存。

  

  再去下降陌陌文章列表,Fiddler中就只显示我们想要的网址了。

  

  接下来,看看如何把里面列下来的那些内容全都保存到笔记本上。

  先在本地新建一个C:WeChatFilesawlist文件夹。

  依次点Fiddler左上角的 File - Export Sessions - All Sessions,弹出一个对话框,选择 Raw Files , 点Next,又是一个对话框,保存目录设为我们刚刚新建的文件夹。

  

  

  最后点Export ,软件会手动帮我们新建一个类似于C:WeChatFilesawlistDump-0805-15-00-45这样的文件夹,其中有几个json文件,如果你用记事本或则notepad++(强烈建议用前者)打开这种文件,就会看见这是标准的json格式,而Python中有现成的解析json的库。

  

  写代码之前先瞧瞧这种json格式的内容中都有哪些,限于篇幅缘由在此只提示你们借助好fiddler的json查看工具 + 这个网站,或者直接参照下边的2张图。

  

  

  解析出了文章列表,再结合第2篇中提到的下载单篇文章的源代码稍加整修便可搞定,整个项目的源代码160行,难度不大。

  最后,你可能还在想,究竟要如何领到陌陌文章列表?要如何手动下降?你可能须要一个按键精灵,或者自己用python写段小代码,但这2个方案似乎都有点上手难度,不妨把这个作为考验你们智慧的小作业。因为,至少,您可以自动多点几下搞定,还由于,这种方法只是一个过渡形式。

  以上,就完成了整个批量下载文章的主流程。但这样做有起码3个显著的缺点:

  需要手工翻文章列表页,且不能翻页很快,否则容易被陌陌限制。

  列表中不收录近来的文章,因为近来文章不是以上文所述的网址方式出现的。

  每下载一个新号,都要自动更改py文件中的保存目录。

  当然这种缺点都有解决办法,想把html转成pdf和word也不是啥难事,至于要不要在前面的文章写下来取决于本文是否达到了我的预期热度。

  但起码,看到这儿的你,完全可以自主去保存想要的东西了,行动上去吧!

  本文会同步在多个平台,由于公众号等平台发文后不可更改,所以勘误和难点解释请注意查看文后留言,也可以点击"阅读原文"查看我的个人博客版。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线