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

如何在Python中获取网页Span元素的真实值(36)?

如何获取动态渲染的Span元素真实值

问题原因

你在审查元素中看到的36是页面加载后JavaScript动态更新的内容,而网页源码里的0是服务器返回的初始静态值。Selenium默认获取的是元素初始加载状态的内容,所以会拿到0而非真实的36。

可行解决方案

  • 等待JS渲染完成
    使用WebDriverWait等待元素文本更新为非初始值,确保JS完成数据注入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.webdriver.common.by import By
    
    # 最多等待10秒,直到元素文本不等于初始的0
    element = WebDriverWait(driver, 10).until(
        lambda x: x.find_element(By.ID, "connected_modems").text != "0"
    )
    print("真实值:", element.text)
    

    如果明确目标值是36,也可以直接等待该文本出现:

    element = WebDriverWait(driver, 10).until(
        EC.text_to_be_present_in_element((By.ID, "connected_modems"), "36")
    )
    
  • 直接通过JS获取渲染后内容
    绕过Selenium的text属性限制,用execute_script直接读取元素的textContent(JS层面的渲染后文本):

    element = driver.find_element(By.ID, "connected_modems")
    real_value = driver.execute_script("return arguments[0].textContent;", element)
    print("真实值:", real_value)
    
  • 检查元素自定义属性
    部分网站会把动态数据存在元素的自定义属性(如data-value)中,可遍历属性排查:

    element = driver.find_element(By.ID, "connected_modems")
    # 打印所有属性,查找存储真实值的字段
    for attr in element.get_property('attributes'):
        print(attr['name'], attr['value'])
    # 若存在data-value属性,直接获取
    real_value = element.get_attribute("data-value")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 21:45:13