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

网页爬取返回None值?如何获取Valorant玩家MMR评分

解决tracker.gg Valorant玩家MMR抓取返回None的问题

你的代码返回None主要有两个核心原因:

1. 页面是动态渲染的

tracker.gg的玩家数据是通过JavaScript动态加载的,直接用requests.get()获取的是未渲染的静态HTML,里面根本没有你要找的stat__value元素,自然返回None。

2. 未模拟浏览器请求头(次要但可能影响)

网站可能会识别非浏览器的请求,返回简化或拦截的内容,导致元素无法被找到。

解决方法一:用Selenium模拟浏览器加载

通过模拟真实浏览器加载页面,等待动态内容渲染完成后再抓取元素:

  1. 先安装依赖:
pip install selenium
  1. 下载对应浏览器的驱动(比如ChromeDriver,版本要和你的浏览器匹配)

  2. 示例代码:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options
import time

# 配置无头模式(可选,不弹出浏览器窗口)
chrome_options = Options()
chrome_options.add_argument("--headless=new")

driver = webdriver.Chrome(options=chrome_options)
driver.get("https://tracker.gg/valorant/profile/riot/curry%2366666/overview")

# 等待页面加载完成,时间可根据网络情况调整
time.sleep(3)

# 定位MMR元素(注意:网站的class可能会更新,需确认当前页面的元素结构)
mmr_element = driver.find_element(By.CSS_SELECTOR, "span.stat__value")
if mmr_element:
    print(f"玩家MMR:{mmr_element.text}")
else:
    print("未找到MMR元素,请检查元素选择器是否正确")

driver.quit()

解决方法二:直接调用网站API(更高效)

打开浏览器开发者工具(F12),切换到Network标签,刷新页面后找到加载玩家数据的XHR请求,直接请求对应的API接口,解析JSON数据即可:

示例代码:

import requests

# 模拟浏览器请求头
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",
    "Accept": "application/json"
}

# 替换为实际找到的API地址
api_url = "https://api.tracker.gg/api/v2/valorant/standard/profile/riot/curry%2366666"
response = requests.get(api_url, headers=headers)
response.raise_for_status()  # 抛出请求错误

data = response.json()
# 从JSON结构中提取MMR(路径需根据实际返回数据调整)
mmr_value = data["data"]["segments"][0]["stats"]["mmr"]["displayValue"]
print(f"玩家MMR:{mmr_value}")

注意事项

  • 网站可能会更新元素结构或API接口,若代码失效,需重新检查页面元素或API请求
  • 频繁请求可能触发反爬机制,建议添加请求间隔,遵守网站的使用条款

内容的提问来源于stack exchange,提问作者Alex is funny

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 21:00:00