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

如何用VBA版Selenium提取HTML中br标签后的文本节点内容

解决方案

针对你遇到的第一个<br>后文本无法抓取的问题,因为这段内容属于<li>节点的直接文本子节点(不在任何标签内),可以用以下两种方法实现:

方法1:遍历<li>的子节点提取文本

通过定位到<li>元素后,遍历其所有子节点,筛选出类型为文本节点(NodeType=3)的内容,再提取目标部分:

Dim liElement As WebElement
Set liElement = navegadorChrome.FindElementsByClass("milestones")(1).FindElementsByTag("li")(1)

' 遍历li的所有子节点
Dim node As Object
For Each node In liElement.ChildNodes
    ' NodeType=3 代表文本节点,并且内容不为空(排除换行/空格)
    If node.NodeType = 3 And Trim(node.Text) <> "" Then
        ' 这里的文本就是第一个<br>后的地址内容
        Cells(linha, 14).Value = Trim(node.Text)
        Exit For ' 找到目标后退出循环
    End If
Next node

方法2:执行JavaScript脚本直接获取

利用Selenium的ExecuteScript方法,通过JS直接定位到目标文本节点:

Dim addressText As String
' 执行JS脚本,获取strong标签后的第一个文本节点内容
addressText = navegadorChrome.ExecuteScript("return document.querySelector('.milestones li strong').nextSibling.textContent.trim();")
Cells(linha, 14).Value = addressText

补充说明

  • 方法1兼容性更好,不需要依赖JS环境;方法2更简洁,适合熟悉JS语法的场景。
  • 注意节点索引:如果页面中有多个<li>,要确保FindElementsByTag("li")(1)是你要定位的目标项(Selenium的索引通常从1开始,可根据你的代码习惯调整)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 08:54:23