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

Selenium通过XPath选择表格列失效,循环重复问题求助

问题解决:Selenium遍历表格列元素时重复获取内容

你的代码出现循环重复的核心原因是:子元素查找的XPath使用了全局搜索语法。当你在column.find_element里用//div[1]/a这种写法时,//会从整个HTML文档的根节点开始匹配元素,而不是限定在当前column元素的子节点范围内,所以不管遍历到哪个table-columns元素,都会拿到页面中第一个符合条件的子元素,导致输出重复。

修正后的代码

把XPath改为相对路径(开头加.),表示从当前column元素的上下文开始搜索:

columns = driver.find_elements(By.XPATH, "//div[@class='table-columns']")
print(len(columns))

for column in columns:
    # 使用.//开头的相对路径,限定在当前column元素内查找
    cell1 = column.find_element(By.XPATH, ".//div[1]/a")
    cell2 = column.find_element(By.XPATH, ".//div[2]")
    cell3 = column.find_element(By.XPATH, ".//div[3]")
    cell4 = column.find_element(By.XPATH, ".//div[4]")
    print(cell1.get_attribute('href'), cell2.text, cell3.text, cell4.text)

补充说明

  • .//是Selenium中相对路径的写法,代表从当前元素的子节点或后代节点中查找匹配的元素
  • 如果子元素是直接子节点,也可以用./div[1]/a(./表示当前元素的直接子节点),效果和.//在这个场景下一致,但.//更灵活,能匹配所有后代节点

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 17:30:11