做 Python爬虫 和 电竞本地生活分析 的朋友,对《王者荣耀》官方合作赛事平台(卡游/王者赛宝系小程序 mpapi.kayou110.com)一定不陌生。
线下门店赛、城市赛、资格赛、五排公开赛……这些数据的商业价值非常高:
某城市周末档期热度
门店承接赛事能力
高价赛事(人均费用)分布
报名满员速度 → 用户活跃度
资格赛密度 → 职业通道热度
但这类数据不在普通网页里,全在 微信小程序 HTTPS 接口 里。不抓包,拿不到;不会还原请求头,服务器直接拒。
今天这篇,我基于 Charles / Fiddler 抓包 → 还原 get_matchlist 接口 → Python requests 复现 → 兼容根节点 list/dict → 衍生“报名率 / 剩余名额 / 满员预警”,把整套小程序爬虫思路拆给你看。核心全讲,但 Match-Token 续期、参数签名校验、小程序加密 body 只给逻辑不贴完整封装——毕竟能稳定跑、不被网关拦的脚本,和跑一次 401 的 Demo 是两个东西。
Python爬取微信小程序HOK赛事 · 核心逻辑拆解
技术栈:Charles抓包 + requests复现 + JSON根节点兼容 + CSV衍生指标
一、为什么小程序赛事数据值得爬?
字段 | 运营价值 |
|---|
门店 / 城市 / 地址 / 经纬度 | 电竞门店 POI 分布 |
开赛时间 / 星期 | 周末档期冲突分析 |
已报名 / 最大人数 | 热度与转化漏斗 |
报名率 / 剩余名额 | 满员预警(≥80% 标“即将满员”) |
人均费用 | 赛事商业化分层 |
是否资格赛 / 组别 | 职业晋升通道密度 |
距离(米) | 本地半径投放参考 |
👉 一份 CSV = 一套 城市电竞赛事运营看板。
二、抓包定位接口(小程序爬虫第 1 步)
工具:Charles / Fiddler / mitmproxy
步骤:
手机/模拟器代理到电脑 8888
安装并信任 Charles 根证书(iOS/Android 都要)
打开微信 → 王者荣耀赛事小程序 → 切到“报名中”
Network 过滤 mpapi.kayou110.com
命中:
GET https://mpapi.kayou110.com/project/matchapi/get_matchlist ?filter=ALL®ion=全部&page=1&limit=10 &status=baoming&gamename=HOK&lat=22.80&lng=113.29
✅ 关键请求头:
⚠️ 坑位:
三、根节点兼容:list or dict?(你这段代码最稳的一点)
小程序本地真机返回:
[ {id:1,...}, {id:2,...} ]
沙盒 / 网关拦截返回:
{"code":500,"msg":"gateway error","data":null}
✅ 兼容逻辑:
if isinstance(json_data, list): items = json_dataelif isinstance(json_data, dict): items = (json_data.get("match") or json_data.get("data") or json_data.get("list") or [])
⚠️ 坑位:
👉 这也是为什么你本地跑通、沙盒报错的原因,已经在代码里修对了。
四、衍生指标算法
原始接口只给:
{"men": 38, "maxplayer": 50, ...}
✅ 算出运营级指标:
fill_rate = f"{men_i / max_i * 100:.1f}%" if max_i > 0 else "0.0%"remain = max_i - men_iwarn = ("已满员" if men_i >= max_i else "即将满员" if men_i / max_i >= 0.8 else "可报名")
✅ 价值:
≥80% 自动标“即将满员” → 运营介入扩容
剩余名额 → 投放文案直接复用
报名率排序 → 找城市爆款门店
👉 这一步,是把“爬虫”变成“分析系统”的分界线。
五、分页与终止条件
params = {"page": page, "limit": 10, "status": "baoming", ...}res = requests.get(url, headers=headers, params=params, timeout=10)ifnotparse_json(res.json()): breakpage += 1; time.sleep(1)
✅ 关键点:
⚠️ 坑位:
不 sleep → IP/Token 限速
不改 region → 只拿全国混合数据
六、我故意不展开的三处
Match-Token 自动续期:小程序登录态 → refresh_token 流转
请求签名 sign:md5(参数+timestamp+key) 校验还原
响应 gzip / AES 解码:部分小程序返回体加密处理
七、这套数据能干什么?
电竞门店:评估周末承接量与溢价空间
城市运营:热区地图(POI + 报名率热力)
赛事策划:同类赛事历史满员速度对标
投放团队:半径 5km 高意向用户圈选
数据产品:HOK 城市赛事公开看板
八、结尾软广
爬虫不难,难的是从微信小程序 HTTPS 里把业务指标“算出来”,而不只是把 JSON 存盘。
这篇是 《Python 商业数据源实战》 的“小程序抓包篇”,也是首次打通 电竞 × 本地生活 × 运营指标 的一篇。
完整源码(含 Token 续期、sign 还原、满员预警看板)在圈子里,后台回 HOK赛事 看入口。