调用请求返回空值,如何获取R6 Tracker用户的KD值?
问题分析与解决方法
问题原因
直接用requests.get()请求拿到的是网站未渲染的静态HTML,目标元素trn-defstat__value是通过JavaScript动态加载生成的,所以BeautifulSoup无法在静态页面中找到该元素,返回None,调用kd.text会触发AttributeError;使用find_all()会得到空列表,同样无法访问text属性而报错。
解决方法
方法1:使用Selenium模拟浏览器渲染页面
Selenium会模拟真实浏览器加载页面,等待JavaScript渲染完成后再获取元素:
- 先安装依赖并下载对应浏览器驱动(如ChromeDriver):
pip install selenium
- 示例代码:
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 初始化浏览器驱动(需确保驱动路径正确) driver = webdriver.Chrome() driver.get("https://r6.tracker.network/profile/xbox/tbzq") # 等待目标元素加载完成(最多等待10秒) kd_element = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.CLASS_NAME, "trn-defstat__value")) ) print(kd_element.text) # 关闭浏览器 driver.quit()
方法2:直接调用网站API接口(更高效)
通过浏览器开发者工具抓包,找到网站获取用户数据的API接口,直接请求接口获取JSON格式数据:
示例代码:
import requests # 添加请求头模拟浏览器请求 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36", "Referer": "https://r6.tracker.network/" } # 替换为实际抓包得到的API地址 api_url = "https://api.tracker.gg/api/v2/r6/standard/profile/xbox/tbzq" response = requests.get(api_url, headers=headers) data = response.json() # 从JSON结构中提取KD值(路径需根据实际返回数据调整) kd_value = data["data"]["segments"][0]["stats"]["kd"]["value"] print(kd_value)
内容的提问来源于stack exchange,提问作者Zye
相关产品推荐
相关产品推荐

