Contents

某考研查询微信小程序爬虫

:::tip 解决某考研查询某小程序jwt权限认证与采集 :::

前言

日常采集数据时, 有很多需要登录才能获取的数据, 不能解决权限认证这个问题, 就无法获取到想要采集的数据, 目下流行的认证机制有session, token 与 JWT, 最近写爬虫遇到这个问题, 记录下解决方法

爬虫需求

如图: 获取每个高校详情页的上 中 下 三部分类容

列表页

https://gitee.com/chen-zq/bgimages/raw/master/img/20201216182520.png

详情页

https://gitee.com/chen-zq/bgimages/raw/master/img/20201216182657.png

项目逻辑

  1. 使用Fiddler抓包, 查看响应数据结构
  2. 对应字段创建数据库表
  3. 编写爬虫代码
  4. 解决权限认证问题
  5. 解析数据, 保存数据

抓包

认证 第一次进小程序是, 一般都会弹出微信授权, 这个也就是服务后端用来登录的接口, 抓包发现返回登录成功的数据, token结构是无疑问后端采集的是 JWT 认证机制, 有了登录接口, 采集就好办了, 而JWT的使用在请求时Headers中带上Authorization参数 https://gitee.com/chen-zq/bgimages/raw/master/img/20201216184049.png

列表页 https://gitee.com/chen-zq/bgimages/raw/master/img/20201216185633.png https://gitee.com/chen-zq/bgimages/raw/master/img/20201216185755.png

详情页 https://gitee.com/chen-zq/bgimages/raw/master/img/20201216190020.png https://gitee.com/chen-zq/bgimages/raw/master/img/20201216190149.png

::: tip 总结 在请求接口时, 全程携带认证令牌且保证令牌有效, 否则无法获取数据 :::

建表

https://gitee.com/chen-zq/bgimages/raw/master/img/20201216190413.png

爬虫

使用scrapy框架开发

起始函数

https://gitee.com/chen-zq/bgimages/raw/master/img/20201216191418.png

详情页函数

https://gitee.com/chen-zq/bgimages/raw/master/img/20201216191638.png

写入数据库

https://gitee.com/chen-zq/bgimages/raw/master/img/20201216191841.png

下载中间件

这步就是实现携带令牌访问的代码, 需要在配置开启此中间件

加了随机请求头功能, 代理ip也可在此中间件加入

https://gitee.com/chen-zq/bgimages/raw/master/img/20201216191939.png

配置文件

配置数据库信息

https://gitee.com/chen-zq/bgimages/raw/master/img/20201216192131.png

结果

输出

https://gitee.com/chen-zq/bgimages/raw/master/img/20201216192458.png

数据

20分钟采集了1万条数据 https://gitee.com/chen-zq/bgimages/raw/master/img/20201216192710.png