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

如何通过Selenium和Python从HTML DOM分别获取td内的独立文本?

如何在Selenium中直接获取td内的独立文本片段

嘿,我明白你的困扰!当你调用elem.find_element_by_xpath('./td[5]').text时,Selenium会把该td元素下所有可见文本合并成一个字符串,自然就把text1和text2揉在一起了。不过完全不用靠拆分来解决,直接定位具体的文本节点就能分别拿到它们,下面给你两种实用方法:

方法1:精准定位文本节点

利用XPath的text()选择器,直接抓取td下的两个独立文本片段:

# 获取第一个文本(text1)
text1 = elem.find_element_by_xpath('./td[5]/text()[1]').get_attribute('nodeValue').strip()
# 获取第二个文本(text2)
text2 = elem.find_element_by_xpath('./td[5]/text()[2]').get_attribute('nodeValue').strip()

这里要注意几个细节:

  • text()[1]对应td里的第一个文本节点(就是你要的text1),text()[2]对应第二个(text2)
  • 不能直接用.text属性,因为文本节点不是常规的WebElement,得用get_attribute('nodeValue')来提取内容
  • 加上.strip()是为了清除文本前后可能存在的换行、空格等冗余字符

方法2:通过
标签间接定位

如果文本节点的位置不太固定,但<br>标签的位置是确定的,也可以用它来辅助定位:

# 取第一个<br>前面的文本(text1)
text1 = elem.find_element_by_xpath('./td[5]/br[1]/preceding-sibling::text()[1]').get_attribute('nodeValue').strip()
# 取第二个<br>后面的文本(text2)
text2 = elem.find_element_by_xpath('./td[5]/br[2]/following-sibling::text()[1]').get_attribute('nodeValue').strip()

这种方法适应性更强,哪怕td里多了一些其他元素,只要<br>的位置不变,就能准确拿到目标文本。

本质上,这两种方法都是绕过了直接获取整个td的文本,而是精准定位到你需要的单个文本节点,这样就能把text1和text2分别存入独立变量啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:31:02