如何在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
相关产品推荐
相关产品推荐

