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

如何用Selenium Python获取表格中嵌套td元素的值

问题解决方法

原代码的核心问题

  • 定位方式不匹配:使用By.TAG_NAME却传入XPath路径,应该改用By.XPATH
  • 仅获取了整个tbody的文本,没有按需求提取每行的第3个<td>内容

正确实现代码

# 等待tbody加载完成(用正确的XPath定位)
tbody = wait.until(EC.presence_of_element_located((By.XPATH, './body/div/div[1]/div[5]/div[1]/table/tbody')))

# 获取所有数据行
rows = tbody.find_elements(By.TAG_NAME, 'tr')

# 遍历每行,提取第3个<td>的文本
math_grades = []
for row in rows:
    tds = row.find_elements(By.TAG_NAME, 'td')
    # 确保当前行有至少3个<td>再提取
    if len(tds) >= 3:
        third_td_text = tds[2].text  # 索引从0开始,第3个对应索引2
        math_grades.append(third_td_text)
        print(third_td_text)

# 更简洁的写法:直接用XPath定位所有第3个<td>
# third_tds = wait.until(EC.presence_of_all_elements_located((By.XPATH, './body/div/div[1]/div[5]/div[1]/table/tbody/tr/td[3]')))
# for td in third_tds:
#     print(td.text)

额外注意事项

  • 尽量替换sleep(5)为WebDriverWait显式等待,比如等待表格的某个关键元素加载完成,比固定等待更可靠
  • 可以在浏览器开发者工具控制台用$x("你的XPath路径")验证定位是否准确
  • 如果表格包含表头行(用<th>而非<td>),可以调整XPath为./body/div/div[1]/div[5]/div[1]/table/tbody/tr[td],过滤出纯数据行

内容的提问来源于stack exchange,提问作者Abed Al Ghani Mosbah Shaaban

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 16:43:57