Python爬虫五:微信公众号爬虫-2018.9

环境:Windows7 +Python3.6+Pycharm2017

目标:抓取微信公众号全部历史文章(文章名+url)保存到本地csv。

---全部文章: 京东爬虫 、链家爬虫美团爬虫微信公众号爬虫字体反爬Django笔记阿里云部署vi\vim入门----

分析:关于微信公众号的爬取,网上搜索了一下,主要有几种方法:

一、搜狗微信公众平台 http://weixin.sogou.com/ ,有个问题就是这里抓的文章一个不能把公众号文章全部抓全,还有就是文章的地址好像不是永久地址。

二、公众号平台文章调用接口 https://mp.weixin.qq.com/ ,就是你自己要先申请一个公众号,编辑文章的时候有个引用文章,但是这种方法好像有次数限制。具体可以参考以下文章 链接。 一二两种我自己都没试过。

三、APP抓包,通过抓包分析请求参数,然后构造请求。

基本思路:

    抓包工具这里用的是Anyproxy,打开手机微信,进入公众号的历史文章页面,下拉会不断加载历史文章,每次10条。抓包发现这是一个get请求,url如下:

https://mp.weixin.qq.com/mp/profile_ext?action=getmsg&__biz=MzU2MzA2ODk3Nw==&f=json&offset=10&count=10&is_ok=1&scene=124&uin=777&key=777&pass_ticket=%2F%2FMLfYzV4VmptckJ%2BGC%2FEMbuBaYdCzplfP7pig2nHKORwHh%2FKcSp5ufJNIY4R6Y6&wxtoken=&appmsg_token=973_9bX%252FVHxGVbz3AvGoFZHVNBOf1ygPLteCjhz8aA~~&x5=1&f=json

url中主要有三个参数:_biz   公众号的id;offset  翻页参数,每次增加10;appmsg_token 这是一个加密参数,有一段有效期。我们如果要构造请求的话,主要的问题就是这个appmsg_token参数,显然去破解这个参数是怎么生成的难度比较大。本文采用的办法是利用手机微信app发送请求,然后用代理软件Anyproxy截获这个请求的appmsg_token,还有cookie,返回给我们的爬虫程序。

原理就是这么简单,你可以用一个抓包软件抓包,然后手动的将appmsg_token、cookie、headers信息加到你的爬虫代码中,就可以抓取了。爬太快的话会封ip,实际测试每次请求sleep1秒,一个appmsg_token可以把人民日报历史文章全部抓完。本文内容比较多,但是基本上都是为了实现上面步骤的自动化。

本文用到的工具有:Anyproxy抓包工具,adb(一个安卓调试工具,借此可用实现电脑控制手机操作,如点击,滑动等),aiohttp(其他web框架也可以)搭建一个简单的web服务,用以将抓包获取的参数传递给爬虫代码。

实现逻辑如下:手机连接Anyproxy代理,再通过数据线连接电脑(连接adb),打开微信公众号历史文章页面。开启aiohttp的web服务,启动爬虫代码。首先会去获取token和cookie,方法是用adb控制手机下拉加载更多的历史文章触发请求。然后Anyproxy捕获到该请求,将请求的appmsg_token、cookie参数通过post请求发送到aiohttp的web服务器上,然后爬虫代码通过get请求访问aiohttp的web服务器获取appmsg_token、cookie参数,然后开始爬取。

具体实现:

一、Anyproxy安装使用

Anyproxy是阿里开发的一款代理服务器,支持基于nodejs的二次开发。我们可以在中间对请求或者响应做一些修改,如中间人攻击。

安装:1、首先需要安装nodejs,去官网下载,点击安装就行。2、装好nodejs后在cmd窗口输入 npm install -g anyproxy 进行安装。我自己安装过程中遇到个错误,提示是缺少一个react库,我自己去网上下了一个,文件夹名称改为react,然后放到nodejs下面的lib文件夹中。我看网上也没提到这个问题,写下。安装如果遇到其他问题自行百度下应该都能解决。

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值