使用代理及微信客户端,进行微信公众号文章抓取的方案

起始

  1. begin的网址为https://mp.weixin.qq.com/beginSpider
  2. 代理服务器访问begin
  3. begin并不是真实存在的,所以会返回404或者是空白页等
  4. 此时进入anyProxy的beforeSendResponse回调,发现请求地址beginSpider是一个开始抓取的信号,所以调用服务端接口,获取第一个公众号首页的链接
  5. 后端服务器返回第一个公众号首页链接的脚本,形如
    $log <script>setTimeout(function(){window.location.href=$url;},2000);</script>
    $log为给前端查看的log信息,后面的script代表两秒后跳转到指定url
  6. 前端收到脚本后执行,展示log,并在2秒后跳转

循环

  1. 手机客户端跳转指定url
  2. 代理服务器访问url
  3. 此时可以获取到完整的html或者js数据
  4. 此时进入anyProxy的beforeSendResponse回调,将获取到的完整数据发送给后端服务器
  5. 后端服务器收到完整数据以后,分析出多条文章及其链接,保存至数据库,并且返回下一个抓取的链接。如果没有抓到数据,直接跳至下一个公众号。下一个抓取的链接如下判定,如果当前抓取公众号的offset(翻页偏移)未达到这个抓取公众号记录的需要抓取的offset,继续抓下一页,否则抓取下一个公众号。如果不抓取更多公众号,则不返回url,本次结束。
  6. 前端收到脚本后执行,展示log,并在2秒后跳转

URL格式

首页

https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=%s&scene=124#wechat_redirect

翻页

https://mp.weixin.qq.com/mp/profile_ext?action=getmsg&__biz=%s&f=json&offset=%s&count=10&is_ok=1&scene=124&uin=777&key=777&pass_ticket=%s&appmsg_token=%s&x5=0

参数说明

_biz是公众号id 任意公众号文章的html代码中有带 offset跳过数量 pass_ticket会在访问公众号首页时 微信浏览器自动加上 后端从url获取 appmsg_token会在第一页结果的html中 后端从html获取(window.appmsg_token)

注意

首页获取到的数据格式与翻页获取到的数据格式不同 注意区分

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值