前言
今日因为工作的需要,需要对微信公众号进行文章爬取。我尝试过三种方式分别为:
- 1.调取微信公众号获取文章接口
- 2.抓取搜狗微信网页版
- 3.微信客户端中间人截取
前两种方案确定不可取,但是依旧简单说一下吧。
微信公众号抓取
首先这个需要申请一个微信公众号。原理就是微信公众号开发平台有一个文章编辑,有一个通过搜索其他微信公众号昵称获取文章列表的API进行抓取。经过我的试验,一个公众号一天最多抓取100~500篇不等的文章。其实按照这个数量还能使满足需求,但是不是很稳定,有时候抓取几十篇就会失败,还要面临封号的风险。(微信公众号一个身份证只能申请3个?)
搜狗微信抓取
其实去搜狗微信,搜索微信公众号昵称就可以预览最近的文章,不过要输入验证码。用Scrapy写了一个爬虫操作了一下,遇到了很迷的问题(忘记什么问题了),遂放弃。
中间人截取抓取
中间人其实就类似于一个中间件,访问微信公众号首先通过Go程序写的中间人,所以我们很容易获取到公众号的文章。配合bot自动点击,很容易实现大批量的文章抓取。所以本文着重介绍这种方法,包括go程序的中间人截取程序,自动点击bot程序,如何快速获取微信公众号biz的方法,scrapy的python脚本,以及如何搭建自己的代理IP池。
Python爬虫
项目地址:https://github.com/siyun7/scrapy_wechat_spider
Python版微信公众号爬虫,需要配置一下setting文件。简单说一下流程,首先获取到IP代理池的可用代理IP,然后再从设备列表中随机选取虚拟设备名称,要注意的一点是,爬虫运作的前提是知道微信公众号文章的地址,这里很重要因为只有这样才能批量成功采集微信公众号文章。
业务逻辑wechat_mongo.py说明:
mongo存储,去除文章所有样式,并且保存图片,详细业务逻辑不做过多解释
IP代理池
项目地址:https://github.com/siyun7/free_ip_pool
免费开源的项目,开箱即用。自己添加了几个免费的代理IP源,请自行修改
GO中间人代理爬虫以及自动点击bot
项目地址:https://github.com/siyun7/wechat_go_spider_proxy
微信公众号Go语言中间人代理爬虫,作用是爬取微信公众的文章的地址,然后配合scrapy的python爬虫以及自动点击robot即可自动化批量爬取文章。
其中main.json需要配置一下ip地址,windows系统代理也要进行相对应的修改。
以上项目已经投入生产使用,如有问题请email反馈 。[email protected]