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

使用Selenium爬取网站文本内容始终返回0的问题如何解决

问题原因及修正方案

核心错误点

  • 等待时机完全颠倒:你当前的代码执行顺序为发起页面请求→立即抓取元素文本→休眠10秒→打印结果,在你抓取文本的时间点,页面的统计数据还未完成接口请求和渲染,拿到的自然是元素的初始值0,后续的10秒等待完全没有作用。
  • 可选优化点:硬等待time.sleep效率极低且不稳定,容易受网络波动影响出现加载超时依然拿不到数据的情况,更推荐使用Selenium的显式等待机制,自动判断元素加载状态。
  • 兼容提示:新版本Selenium已经弃用find_element_by_xpath系列方法,建议使用By类指定定位方式调用统一的find_element方法。

最简修复代码

直接将休眠逻辑放到页面请求之后、抓取元素之前即可验证效果:

from selenium import webdriver
import time
url = 'https://hytrack.me/'
browser = webdriver.Chrome(r'C:\Users\kinet\OneDrive\Documents\webscraper\chromedriver.exe')
browser.get(url)
# 把等待逻辑移到获取元素之前
time.sleep(10)
text = browser.find_element_by_xpath('//*[@id="stat_totalPlayers"]').text
print(text)

更稳定的显式等待版本

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
import time

url = 'https://hytrack.me/'
browser = webdriver.Chrome(r'C:\Users\kinet\OneDrive\Documents\webscraper\chromedriver.exe')
browser.get(url)
# 最长等待15秒,每隔0.5秒检查一次元素是否加载完成
wait = WebDriverWait(browser, 15)
target_element = wait.until(EC.presence_of_element_located((By.XPATH, '//*[@id="stat_totalPlayers"]')))
# 等待数值渲染完成
while target_element.text.strip() == '0':
    time.sleep(0.5)
print(target_element.text)
browser.quit()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 05:57:04