Can
Be Better

基于Golang+Scrapy版本的微信公众号爬虫

前言

今日因为工作的需要,需要对微信公众号进行文章爬取。我尝试过三种方式分别为:

  • 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反馈 。i@tq.im

 

不开启评论,如有问题疑问请发邮件。i@ltq.im最长的路 » 基于Golang+Scrapy版本的微信公众号爬虫

评论 抢沙发

评论前必须登录!