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

