通过搜狗搜索微信公众号然后拿到链接
通过fiddler检测手机微信拿到链接。
首先,打开fiddler,然后在电脑端微信上找到要爬取的微信公众号,然后左键点一下就会有一个查看所有历史信息。点击查看历史信息之后我们就会在fiddler上看到一条这样的GET请求:
在这个前面加上https://mp.weixin.qq.com后在浏览器中打开整个链接就会发现打开了这个公众号的历史文章了。
多用fiddler抓几次这个链接以及换几个公众号后就会发现,
整个链接里面biz应该是微信公众号的标识符,uin应该是微信号的标识,key是腾讯的一个算法。
在整个链接里面,如果是抓同一个微信公众号的话,那么只有key是有时效性的,其它的都是不变的。
超过一定时间的话,再用这个key打开链接就会发现不能用了,提示请用微信打开了!
通过审查这个链接里面的元素,我们不难发现,已经可以看到文章的链接了,但是问题来了,这个初始链接里依然只有10条最近的文章。这个时候,我们必须往下滑动滚动条才能把剩下的文章全部的显示出来。所以在写程序的时候就需要通过selenium+phahtomJS来链接这个界面并且滑动滚动条,知道滚动条滑到最下面为止了。这样我们再审查元素就可以看到获得了全部的文章链接。 注意,文章的链接分别藏在几种标签里面,所以要把他们全部找出来,不然会遗漏的! 然后把这些链接存起来就好了。
程序
大概说一下我的程序思路: 整个流程就是通过selenium+phantomJS链接上面那个链接,通过BeautifulSoup提取页面,利用JS操作滚动条滚到底直到出现没有更多消息为止,最后找到所有链接后输出就行了(记得链接存在几种类型的tag里面,一定要找全)。由于朋友只需要这一个公众号的链接,而且因为同一个公众号的链接只有key在变,所以key就从bash获取就行了,其它的可以写在程序里。我是不是太懒了……..大概思路就是这样,还有很多可以优化的地方…
原图
得去掉640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1 后面的参数 为0