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

如何用Python解析Dota2ProTracker英雄胜率表格?请求返回None

解决方案:解析Dota2ProTracker英雄胜率数据

问题根源

这个网站的英雄胜率表格是动态加载的,直接用requests请求页面只会拿到空的容器HTML,实际数据是通过后端API异步加载的——这就是你找不到静态页面里的表格链接、请求返回内容无有效数据的原因。

步骤1:定位实际数据接口

用浏览器打开目标页面,按F12调出开发者工具,切换到Network面板,筛选XHR/Fetch类型请求,刷新页面后,你会看到一个加载英雄数据的API请求(比如类似/api/meta/heroes的接口)。复制该请求的完整URL、请求方法(GET)和请求头信息。

步骤2:用Python请求API获取结构化数据

直接请求这个API接口就能拿到JSON格式的原始数据,无需解析HTML。示例代码如下:

import requests

# 替换成你找到的API接口URL
API_URL = "https://api.dota2protracker.com/api/meta/heroes"

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36",
    "Referer": "https://dota2protracker.com/meta"
}

response = requests.get(API_URL, headers=headers)
if response.status_code == 200:
    hero_data = response.json()
    # 打印第一条数据示例
    print(hero_data[0])
else:
    print(f"请求失败,状态码:{response.status_code}")

步骤3:提取目标字段

拿到JSON数据后,直接遍历提取胜率、英雄名等需要的字段:

for hero in hero_data:
    hero_name = hero.get("localized_name")
    win_rate = hero.get("win_rate")
    pick_rate = hero.get("pick_rate")
    print(f"英雄:{hero_name} | 胜率:{win_rate}% | 出场率:{pick_rate}%")

注意事项

  • 网站API接口可能会更新,若上述URL失效,重复步骤1重新查找即可
  • 不要频繁发起请求,避免触发反爬机制,必要时可添加请求间隔(比如time.sleep(1))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 14:45:01