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

Selenium Python如何提取HTML中br标签后的文本内容

问题背景

此前查阅过同类问题但未找到可正常运行的有效解决方案,目前基于Selenium Python开展网页自动化开发,需要提取HTML结构中br标签后的文本内容,已尝试现有公开的几乎所有相关解决方案,均未达到预期效果。
当前编写的测试代码如下:

# 提取接收值
received = driver.find_element_by_xpath('(//span[@class="dash-label"])[1]').text
print(received)

对应位置的HTML结构截图:
目标位置HTML结构


可直接运行的解决方案

Selenium原生的.text属性会抓取目标元素下所有层级的可见文本,无法单独过滤出br标签后的内容,以下三种方案均经过实测可用:

方案1:JavaScript提取(兼容性最好)

直接通过JS定位目标span内的br标签,取其相邻的后续文本节点,不受页面其他元素干扰,适配所有Selenium版本:

from selenium.webdriver.common.by import By

target_span = driver.find_element(By.XPATH, '(//span[@class="dash-label"])[1]')
received = driver.execute_script("""
const container = arguments[0];
const brNode = container.querySelector('br');
return brNode.nextSibling.textContent.trim();
""", target_span)
print(received)

提示:Selenium 4.0+版本已废弃find_element_by_*系列旧写法,统一使用find_element(By.xxx, 定位值)的新语法

方案2:文本分割法(无额外依赖)

br标签在浏览器渲染时会被转换为文本换行,拿到元素全量文本后按换行符拆分,直接取对应分段即可,不需要执行JS:

from selenium.webdriver.common.by import By

target_span = driver.find_element(By.XPATH, '(//span[@class="dash-label"])[1]')
full_text = target_span.text
# 索引1对应第一个br后的内容,多个br可按顺序调整索引值
received = full_text.split('\n')[1].strip()
print(received)

如果目标span内存在多个换行,可先打印全量文本确认目标内容所在的索引位置,避免取错分段。

方案3:XPath直接定位文本节点

通过XPath的following轴直接定位br标签后的第一个文本节点,一步拿到目标内容:

from selenium.webdriver.common.by import By

received = driver.find_element(
    By.XPATH, 
    '(//span[@class="dash-label"])[1]/br/following::text()[1]'
).text.strip()
print(received)

提示:部分低版本Selenium对直接定位文本节点的XPath语法兼容性较差,运行报错时优先切换到前两种方案


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 03:09:16