Python爬虫日记第九天之微信公众号文章二探

前言

写完上一篇我就在想,这样直接当着微信的面说爬取公众号文章的事...是不是有点作死...

然后又一想,切,反正看得人也不多

言归正传,上一篇提到了如何通过搜狗微信爬取公众号文章内容等信息,但注意文章内容虽可以保存,但是文章的链接却是临时链接,也就是说一段时间后会失效

今天就来讲讲,如何获取永久的公众号文章链接;经过几次的测试,发现数据库中的临时链接,取出来之后不能直接在浏览器中打开,会显示链接失效,但是可以从微信内置的浏览器打开,猜测微信内置浏览器会对该url进行解析然后替换成手机端永久链接

请忽略马赛克

而获取永久链接的方法,大抵是有这么两种:

一是通过抓包破解微信加密,得到几个关键字段,然后拼接到链接中,这种方法难度较高

二可以通过微信公众号的搜索接口,获得文章的永久链接

本篇就讲解如何通过微信公众号的搜索接口来获取永久链接

分析

而下一步就不是在搜狗微信中操作了,来看看微信公众号的搜索功能,可以自己申请一个公众号,点击素材管理->新建图文素材

点击工具栏中的超链接图标->查找文章,输入公众号的id或名称,然后我们可以找到对应动态加载的两个链接

一个是搜索公众号的链接,另一个是公众号文章列表的链接

分析这两个链接

以这个搜索链接为例

注意链接中的tokenlang表示显示为中文,fjson即返回是以json格式,random就是一个随机数,query为你搜索的公众号,begin为开始的页

tokencookie是有时效的,所以需要更新,这里本想采用自动化登录的方式,但一想还是需要手机扫二维码,所以干脆直接改为输入tokencookie

接着来看看我们需要的数据在哪里

如上两个图所示就是我们需要的数据,而在第二个接口中有一个fakeid的参数,这个参数经过比对可以发现,就在第一个搜索接口中,也就是第一个图中可以获得,而文章的发布时间以及永久链接也在第二个接口中可以看到

开始

所以这里就讲一下需要添加,改动的代码

这是需要添加的两个接口,给第一个搜索接口传入token以及query参数;给第二个文章列表接口传入token以及fakeid参数

结果

可以看到此时文章链接已与临时链接不同

这里是需要手动输入token以及cookie的,对于cookie以前模拟请求后发现只需要4个参数即可,但是既然手动输入,也就不用挑挑拣拣,就可以直接把cookie拿过去了

再者也需要注意请求过于频繁同样会导致无法通过公众号的搜索接口搜索,关于这一点可以考虑添加动态IP是否可行

两个完整代码都放在我的Github上了,有需要的可以上去拿

https://github.com/joelYing/All_Spider

若有疑问,欢迎指出;觉得不错,点个赞呀

-END-

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181116G22LFX00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券