You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用requests、re、json爬取Rocket League Tracker时stats-v2为空如何修复

异常核心成因
  • 站点前端渲染逻辑迭代:Rocket League Tracker近期版本更新将原服务端直出的全量业务数据拆分,首屏静态HTML仅加载玩家头像、ID等基础展示内容,包含段位数据的stats-v2模块改为前端JS执行后,通过异步接口拉取再动态注入window.__INITIAL_STATE__。requests仅能获取未经过JS解析的静态HTML,自然只能拿到空字段的空壳结构。
  • 基础反爬规则触发:站点新增请求特征校验,当检测到请求缺失真实浏览器标识(如匹配的User-Agent、合法的Referer来源头)时,会直接返回精简版无核心业务数据的HTML响应,不会向非浏览器类请求注入玩家段位这类敏感统计信息。
  • 原有正则匹配规则失效:站点在给window.__INITIAL_STATE__赋值时新增了转义字符、行内无意义注释占位,此前适配的简单正则会提前截断匹配范围,最终提取到空的JSON字符串,对应字段全为空值。
可落地修复步骤
  • 第一步验证反爬触发情况:把当前脚本请求到的响应完整保存为本地HTML文件,和浏览器正常打开同一玩家页面的源码做字段对比。如果确认是缺少核心统计数据,直接给请求补全真实浏览器的请求头配置,示例代码:
    import requests
    
    browser_headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36",
        "Referer": "对应玩家的详情页地址",
        "Accept-Language": "en-US,en;q=0.9"
    }
    resp = requests.get("你原本请求的详情页URL", headers=browser_headers)
    
    重新请求后检查响应中的stats-v2字段是否返回真实段位值。
  • 第二步适配异步数据加载逻辑:如果补全请求头后仍无法从静态HTML中拿到stats-v2数据,说明站点已将核心数据完全从首屏HTML剥离。此时可打开浏览器开发者工具的网络面板,筛选XHR异步请求,定位加载段位数据的接口,直接替换原有HTML爬取逻辑请求该接口获取结构化JSON,稳定性远高于正则匹配静态页面。
  • 第三步修正正则匹配规则:将原有简单的边界匹配规则升级,跳过赋值前后的杂散注释、转义字符,匹配从window.__INITIAL_STATE__ =开始、到所在script块结束的完整JSON字符串再做解析,避免提取到截断的空壳内容。
  • 兜底适配:如果后续请求仍被拦截,可使用requests.Session()维持会话状态,先请求站点首页获取合法会话cookie,再带着cookie请求玩家详情页,降低被反爬识别的概率。

内容的提问来源于stack exchange,提问作者Andrew Prince

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.24 16:36:04