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

如何用Python Requests与bs4获取Krunker.io玩家等级数据?

问题分析

krunker.io的社交页面是动态渲染的,你用requests请求只能拿到页面的初始静态HTML,而玩家等级这类数据是通过JavaScript异步加载后生成DOM元素的,所以直接用BeautifulSoup解析静态HTML找不到目标元素。

解决方案:用Selenium模拟浏览器加载动态内容

Selenium可以模拟真实浏览器的行为,等页面JavaScript执行完成后再解析DOM,就能获取到动态生成的等级元素。

修改后的代码示例

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
from fake_useragent import UserAgent

url = "https://krunker.io/social.html?p=profile&q=Dragon"

# 配置Chrome浏览器选项,使用随机User-Agent
user_agent = UserAgent()
options = webdriver.ChromeOptions()
options.add_argument(f'user-agent={user_agent.random}')
# 可选:启用无头模式(不显示浏览器窗口)
# options.add_argument('--headless=new')

# 初始化浏览器
driver = webdriver.Chrome(options=options)
driver.get(url)

try:
    # 等待目标元素加载完成(最多等待10秒)
    level_element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, 'div.statTabB0 strong'))
    )
    # 获取等级文本
    level_text = level_element.text
    print(f"玩家等级:{level_text}")

except Exception as e:
    # 检查是否出现验证码
    captcha = driver.find_elements(By.CSS_SELECTOR, 'div.captcha')
    if captcha:
        print("检测到验证码,请手动处理或接入验证码识别服务")
    else:
        print(f"无法获取等级:{str(e)}")
finally:
    # 关闭浏览器
    driver.quit()

关键说明

  1. 动态内容加载:Selenium会等待页面JS执行完毕,确保目标元素生成后再定位,解决静态请求拿不到数据的问题。
  2. 元素定位:如果div.statTabB0 strong不是等级的准确选择器,你可以在浏览器按F12,找到等级元素的实际CSS选择器或XPath替换进去。
  3. 验证码处理:如果页面触发验证码,需要手动处理或集成第三方验证码识别工具。
  4. 依赖安装:执行pip install selenium安装依赖,同时要确保ChromeDriver版本与本地Chrome浏览器版本匹配。
替代方案:调用官方API(推荐)

krunker大概率有公开API接口,直接请求API获取玩家数据比爬页面更稳定高效。比如可以尝试请求类似https://krunker.io/api/social?profile=Dragon的接口(具体接口需自行验证),返回的JSON数据里会直接包含等级等信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 04:05:14