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

Python Selenium定位指定文本a标签后提取同tr行多td内容问题

问题根因

错误来自两个XPath写法的常见误区:

  1. 相对XPath开头加了//会从整个HTML文档根节点开始查找,而非基于你已定位的first元素上下文,所以始终返回整个页面第一个符合条件的节点,也就是首行对应数据
  2. 你定位到的<a>标签的直接父节点是<td>,而非行节点<tr>,直接找<a>的同级节点是找不到其他列的<td>的

修正后可运行代码

from selenium import webdriver
# 高版本Selenium(4.0+)需要导入Service,3.x旧版本可以省略下面这行
from selenium.webdriver.chrome.service import Service

# 4.0+版本驱动写法
driver = webdriver.Chrome(service=Service('C:\\Users\\Carl\\Downloads\\chromedriver.exe'))
# 3.x旧版本驱动写法,二选一即可
# driver = webdriver.Chrome('C:\\Users\\Carl\\Downloads\\chromedriver.exe')

driver.get('https://www.ncaa.com/stats/football/fbs/current/team/27')

team = "Coastal Carolina"
# 定位到目标学校的a标签
team_a = driver.find_element_by_xpath(f'//a[text()="{team}"]')

# 先找到a标签所属的最近一级tr行节点,XPath开头加.代表基于当前节点上下文查找
current_tr = team_a.find_element_by_xpath('./ancestor::tr[1]')
# 按tr下的td列顺序取值,索引对应表格列的实际顺序
tds = current_tr.find_element_by_xpath('./td[4]').text
total_points = current_tr.find_element_by_xpath('./td[10]').text
ppg = current_tr.find_element_by_xpath('./td[11]').text

print(tds, total_points, ppg)

driver.quit()

关键逻辑说明

  • 所有相对XPath开头加.,强制基于已定位的元素上下文查找,避免全局匹配错误
  • 先通过./ancestor::tr[1]找到当前a标签所属的行节点,再按列索引取对应字段,逻辑和表格的视觉顺序完全对应,不容易写错索引

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 11:39:02