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

起始

使用代理及微信客户端,进行微信公众号文章抓取的方案_第1张图片

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

循环

使用代理及微信客户端,进行微信公众号文章抓取的方案_第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)

注意

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

你可能感兴趣的:(爬虫)