微信公众号爬虫方案分析

2024年7月19日更新

目前本人封装了一套便于使用的api, 可以直接调用 文章列表和阅读数均可获取

可以私信联系我交流心得

文中四种方式,均为我本人亲身使用过, 文中所有的文字及图片均为本人身亲自编写和截图, 如果转载,请标明来源

由于微信公众号爬虫的特殊性,微信公众号爬虫始终是爬虫工程师比较头疼的一个问题。

本文主要介绍一下目前市面上各种爬虫的优劣性以及适用群体

如果您有任何不同见解,或者除文中四种方式之外的方式.欢迎留言跟我交流.

1.搜狗微信(https://weixin.sogou.com/)

优点: 易于抓取,唯一的限制只有验证码(可以通过更换代理ip避免)

缺点: 无法通过公众号搜索,获取指定公众号文章, 无法获取永久链接 (文章只有几个小时有效期,过后无法打开),无法获取阅读数

难点:  验证码(通过代理ip可以解决)

适用群体: 个人抓取文章后保存,后可用于做数据分析

原理简介: 通过程序请求搜狗的首页, 分析html结构, 通过正则匹配 拿到文章的url 即可. 如下图所示

搜狗微信

2. 基于中间人以及脚本的方式

优点: 可以低成本获取数据,并且可以获取阅读数

缺点: 抓取数据有限(微信限制,无法解决),难于部署(需要脚本+抓包工具转发),可能会封号!!!

适用群体: 个人抓取规模很小的情况下,或者企业用于小规模抓取(100个公众号左右)

原理简介:

通过点击的方式 正常向微信发送请求,但是在配置了抓包工具等方式的中间人代理,可以捕获到点击的链接,从而抓取返回的数据发送到服务端

脚本可以通过按键精灵或者其他语言的自动化程序来实现

流程演示如下( 演示 使用的是mac版客户端,  win/mac/ios/android 客户端同理 ) 

a.配置好抓包工具(charles/fiddler) 或中间人代理

b.在客户端随意点击一篇文章

配置好抓包工具后点击文章

c.查看抓包工具的请求

抓到的json数据

d.配置转发

 charles配置转发的方式

不过这个方式只能转发参数, 转发参数后,可以在服务端模拟请求即可. 后面我会完善一篇anyproxy实现结果的转发.

不过请注意!!!! 这种方式应该很可能会封号, 因为在点击文章的同时 相当于阅读了某一篇文章. 所以建议拉长抓取间隔,降低每天抓取次数(100~200次之内可能比较合理).

3.公众号后台抓取

优点: 可以请求多次,并且不依赖与微信号不会有封号的风险

缺点: 无法抓取阅读数, 需要申请微信公众号, 需要人为操作(授权扫码), 稳定性可能相对差一些(异常导致操作失效)

难点: 自动化操作流程

适用群体: 只想抓文章,不需要阅读数,并且对稳定性不太在意的

原理简介:

a.首先打开微信公众平台官网 https://mp.weixin.qq.com/ ,并且扫码登录

b. 左侧菜单栏选择创作管理->图文素材->新的创作->图文消息

c. 点击超链接 选择公众号, 手动输入需要抓取的公众号 

d.此时可以打开浏览器检查元素 查看一下请求(提前打开检察元素 不然无法拦截到请求)

可以看到两个 XHR的资源 searchbiz是查询公众号 appmsg是获取公众号文章 

https://mp.weixin.qq.com/cgi-bin/searchbiz

https://mp.weixin.qq.com/cgi-bin/appmsg

具体参数请自行抓包查看 很简单的几个参数

e.到此为止 整套流程就完事了, 需要做的就是 通过自动化的程序 来实现如下操作, 如果追求一体化的操作并且熟悉python的朋友 可以尝试用selenium来操作,这个方式相对简单一些,如果不太熟悉python的朋友 可以手动登录并且扫码后 导出 cookie , 然后再用自己熟悉的语言,使用cookie并请求接口 即可实现 (核心问题就是cookie) 

4.购买成熟的api方案

优点: 不需要任何部署,直接调用api即可实现,可获取阅读数和文章,也可以通过关键词搜索

缺点: 大部分可能需要付费.

难点: 无

适用群体: 需求量比较大的企业,并且需要数据稳定性较高

原理简介:  封装好的数据接口,底层应该是由一套分布式的稳定架构来实现, 由一些小号以及代理ip来实现规模大一点的抓取

  • 7
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值