如何用Python爬虫实战抓包,采集某成考题库微信小程序数据?
- 内容介绍
- 文章标签
- 相关推荐
本文共计864个文字,预计阅读时间需要4分钟。
@[toc] 🤖 实战场景:从本篇博客开始,我们将针对微信小程序编写一系列爬虫,这些爬虫将基于案例进行串联,确保对大家的学习有所帮助。
正式开始前,首先准备以下工具,一个可以解析‘的利器。
@[toc]
⛳️ 实战场景
从本篇博客开始,我们会针对微信小程序编写一系列的爬虫,这些爬虫依旧通过案例进行串联,保证对大家的学习有所帮助。
正式开始前先准备工具,一个可以解析 weixin.不能展示的作品地址.com/app/index.php?i=1063&t=0&v=1.0.0&from=wxapp&c=entry&a=wxapp&do=fenlei_data&state=指纹地址&m=huitong_shuati&sign=指纹地址&up_class_id=24377&openid=om76m4sMOiBzooHFFKbqcZJFysq0
4.获取分组下的试卷
weixin.不能展示的作品地址.com/app/index.php?i=1063&t=0&v=1.0.0&from=wxapp&c=entry&a=wxapp&do=fenlei_data&state=指纹地址&m=huitong_shuati&sign=指纹地址&up_class_id=30658&openid=om76m4sMOiBzooHFFKbqcZJFysq05.获取试题
weixin.不能展示的作品地址.com/app/index.php?i=1063&t=0&v=1.0.0&from=wxapp&c=entry&a=wxapp&do=gettopic&state=指纹地址&m=huitong_shuati&sign=指纹地址&topic_class_id=30659&ordinal=1获取到这五个地址之后,还需要进一步的进行整理分析,看中间是否存在步骤跳过的可能。
经过筛选,得到下图内容,其中 up_class_id 作为核心参数脱颖而出。所以后续的内容就围绕 up_class_id 进行编写即可,二级分类数据获取代码如下:
import requests import pymysql headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36" } def get_conn(): conn = pymysql.connect( host='127.0.0.1', user='你的账号', db='question_scrapy', port=3306, cursorclass=pymysql.cursors.DictCursor ) return conn def run(): res = requests.get( 'weixin.不能展示的作品地址.com/app/index.php?i=1063&from=wxapp&c=entry&a=wxapp&do=fenlei_data&m=huitong_shuati&up_class_id=3464', headers=headers, timeout=5, verify=False) json_data = res.json() if json_data["errno"] == 0: fenlei_data = json_data["data"]['0']["fenlei_data"] insert_fenlei(fenlei_data) def insert_fenlei(fenlei_data): conn = get_conn() cursor = conn.cursor() for item in fenlei_data: up_class_id = item["id"] topic_class_name = item["topic_class_name"] cursor.execute( f'insert into fenlei_data values({up_class_id},"{topic_class_name}")') try: conn.commit() except Exception as e: conn.rollback() cursor.close() conn.close() if __name__ == '__main__': run()输入插入结果如下所示:四层页面全部采集完毕,得到的数据如下所示:拿到本列表之后,就可以批量采集试题了,直接通过最后一个链接地址获取。
此时再次运行代码,就可以将试题全部采集到本地数据库中了,为了后续操作便捷,试题全部采用 JSON 字符串格式入库。
本文共计864个文字,预计阅读时间需要4分钟。
@[toc] 🤖 实战场景:从本篇博客开始,我们将针对微信小程序编写一系列爬虫,这些爬虫将基于案例进行串联,确保对大家的学习有所帮助。
正式开始前,首先准备以下工具,一个可以解析‘的利器。
@[toc]
⛳️ 实战场景
从本篇博客开始,我们会针对微信小程序编写一系列的爬虫,这些爬虫依旧通过案例进行串联,保证对大家的学习有所帮助。
正式开始前先准备工具,一个可以解析 weixin.不能展示的作品地址.com/app/index.php?i=1063&t=0&v=1.0.0&from=wxapp&c=entry&a=wxapp&do=fenlei_data&state=指纹地址&m=huitong_shuati&sign=指纹地址&up_class_id=24377&openid=om76m4sMOiBzooHFFKbqcZJFysq0
4.获取分组下的试卷
weixin.不能展示的作品地址.com/app/index.php?i=1063&t=0&v=1.0.0&from=wxapp&c=entry&a=wxapp&do=fenlei_data&state=指纹地址&m=huitong_shuati&sign=指纹地址&up_class_id=30658&openid=om76m4sMOiBzooHFFKbqcZJFysq05.获取试题
weixin.不能展示的作品地址.com/app/index.php?i=1063&t=0&v=1.0.0&from=wxapp&c=entry&a=wxapp&do=gettopic&state=指纹地址&m=huitong_shuati&sign=指纹地址&topic_class_id=30659&ordinal=1获取到这五个地址之后,还需要进一步的进行整理分析,看中间是否存在步骤跳过的可能。
经过筛选,得到下图内容,其中 up_class_id 作为核心参数脱颖而出。所以后续的内容就围绕 up_class_id 进行编写即可,二级分类数据获取代码如下:
import requests import pymysql headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36" } def get_conn(): conn = pymysql.connect( host='127.0.0.1', user='你的账号', db='question_scrapy', port=3306, cursorclass=pymysql.cursors.DictCursor ) return conn def run(): res = requests.get( 'weixin.不能展示的作品地址.com/app/index.php?i=1063&from=wxapp&c=entry&a=wxapp&do=fenlei_data&m=huitong_shuati&up_class_id=3464', headers=headers, timeout=5, verify=False) json_data = res.json() if json_data["errno"] == 0: fenlei_data = json_data["data"]['0']["fenlei_data"] insert_fenlei(fenlei_data) def insert_fenlei(fenlei_data): conn = get_conn() cursor = conn.cursor() for item in fenlei_data: up_class_id = item["id"] topic_class_name = item["topic_class_name"] cursor.execute( f'insert into fenlei_data values({up_class_id},"{topic_class_name}")') try: conn.commit() except Exception as e: conn.rollback() cursor.close() conn.close() if __name__ == '__main__': run()输入插入结果如下所示:四层页面全部采集完毕,得到的数据如下所示:拿到本列表之后,就可以批量采集试题了,直接通过最后一个链接地址获取。
此时再次运行代码,就可以将试题全部采集到本地数据库中了,为了后续操作便捷,试题全部采用 JSON 字符串格式入库。

