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

