使用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
相关产品推荐
相关产品推荐

