GenshinImpact
介绍
原神祈愿记录爬虫
软件架构
本程序采用Python + MySQL实现对原神祈愿记录的爬取、存储
安装教程
- 下载wishInventoryData.py
- 更新主函数中的URL及数据库信息
- 运行wishInventoryData.py等待爬取数据
使用说明
- 下载wishInventoryData.py
在主函数中输入游戏祈愿界面获取的URL(该方法适用于PC端):
- 打开抓包工具(推荐Fiddler Classic)
- 运行原神
- 打开祈愿图标
- 点击历史记录
- 在抓包工具中找到对应的请求URL
url = 'https://webstatic.mihoyo.com/hk4e/event/e20190909gacha/index.html? + 个人标识码 + #/log'
在主函数中添加数据库信息
# 数据库信息 host = "数据库地址" user = "用户名" password = "密码" database = "GenshinImpactWishEventData" # 数据库名称
可在主函数中自行修改祈愿类型(目前默认全部顺序爬取):
- 200(常驻祈愿)
- 100(新手祈愿)
- 301(角色活动祈愿与角色活动祈愿-2)
- 302(武器活动祈愿)
- 500(集录祈愿)
for i in ['200', '100', '301', '302', '500']: # 祈愿类型 gacha_type = i # 当前页码 page = '1' # 每页显示数据条数(不超过20) size = '5' # 上一页最后一项数据id值(第一页默认为0) end_id = '0' # 计数器 sum = 0 # 判断当前祈愿类型 if getGacha_type(gacha_type) == 0: print("祈愿类型错误") break else: print("正在爬取" + getGacha_type(gacha_type) + "数据:") # 执行请求 res = getData_mihoyo(url, host, user, password, database, gacha_type, page, size, end_id, sum) print(res)
- 运行wishInventoryData.py等待爬取数据
关于角色活动祈愿与角色活动祈愿-2的数据说明
- 由于2.3版本新增了角色活动祈愿-2池,但服务器数据尚未对该池开辟新的分区,而是与原来角色活动祈愿数据同处一个分区,仅仅根据gacha_type进行区分(角色活动祈愿仍为301,角色活动祈愿-2为400),故仍然使用gacha_type = 301的字典类型对角色活动祈愿与角色活动祈愿-2池进行爬取
运行说明
- 由于早期版本原因,本代码仍然有许多地方需要优化,不建议使用当前版本爬取数据
已知问题:
- 仍然未能彻底解决频繁向服务器发送请求导致请求被拒绝的问题,该问题将在后续迭代中优化
- 由于目前服务器可访问的祈愿数据由之前的6个月内提升到1年内,爬取完整数据用时较长,不利于数据的小范围更新,该问题将在后续迭代中优化
版本迭代日志
2024年6月7日:
- 更新了原神祈愿数据请求地址域名指向
- 新增了对集录祈愿数据获取的支持
2021年11月25日:
- 修复了云数据库连接参数不在主函数中的问题,用户可以直接在主函数填写参数
- 修复了频繁向服务器发送请求导致的请求被拒绝的问题
- 修改了查询成功判断语句的位置,确保数据访问成功后再执行数据爬取操作
- 重构了部分异常处理代码,增加了对访问频繁错误的处理,增加了对其他异常的返回提示抛出
2021年9月15日:
- 重构了底层数据库设计,将四表合一,实现一个用户一张表,使得查找更方便
- 重构了数据上传逻辑,从原来每爬取一条数据执行一次插入操作更改为完成全部数据爬取后一并上传,有效提升了运行效率,大大节省了时间开销
- 增加了部分异常处理能力,可在程序异常时及时终止程序并抛出异常
- 优化了代码使用体验,在命令行增加了相关提示词,可以清晰的了解程序执行的状态
- 删除了createTable.sql
2021年9月14日:
- 项目上线
- 创建feature_BackEnd、feature_FrontEnd、master分支
- 上传createTable.sql、README.md、wishInventoryData.py
下次迭代时间:
- 未定
参与贡献
- Fork 本仓库
- 新建 Feat_xxx 分支
- 提交代码
- 新建 Pull Request