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

使用Python Selenium获取data-label为'Score'的元素数值

解决方案:获取目标页面中data-label为'Score'的分数值

原代码存在的问题

  • 错误使用By.Name定位:目标元素的标识属性是data-label="Score",并非name属性,因此该定位方式无法找到目标元素。
  • find_elements_by_tag_name('tbody')返回tbody元素列表,遍历该列表的逻辑冗余(单个表格通常仅含一个tbody),且后续定位元素的方式错误。

修正后的代码实现

方式1:CSS选择器定位(推荐)

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

try:
    # 等待目标表格加载完成
    target_table = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "DataTables_Table_5"))
    )
    # 等待所有data-label为'Score'的td元素加载完成
    score_elements = WebDriverWait(target_table, 10).until(
        EC.presence_of_all_elements_located((By.CSS_SELECTOR, "td[data-label='Score']"))
    )
    # 遍历输出每个分数文本
    for score_elem in score_elements:
        print(score_elem.text)
except Exception as e:
    print(f"执行出错: {str(e)}")
finally:
    driver.quit()

方式2:XPath定位

如果更习惯使用XPath,可将上述代码中score_elements的定位部分替换为:

score_elements = WebDriverWait(target_table, 10).until(
    EC.presence_of_all_elements_located((By.XPATH, "//td[@data-label='Score']"))
)

关键说明

  • 使用presence_of_all_elements_located而非单个元素等待,确保所有分数元素都已加载,避免遗漏数据。
  • 在已定位的表格内部等待元素加载,比全局等待更精准,适配页面动态渲染的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 05:35:28