如何用VBA抓取与对应<h2>标签关联的多个<p>标签文本?
VBA抓取
标签之后的所有
标签文本解决方案
针对你遇到的
与
交替出现的HTML结构,要精准抓取每个
之后的
文本并保留顺序,可以通过以下两种VBA实现方案解决:
方案一:按顺序遍历子元素,标记收集起点
直接遍历目标div下的所有子元素,通过标记判断是否已进入
之后的内容区域,只收集该区域内的
文本:
' 假设HTMLDoc是已加载完成的HTML文档对象(如从IE/XMLHTTP获取) Dim targetDiv As HTMLDivElement Set targetDiv = HTMLDoc.querySelector("div.text-article_inside") ' 直接定位目标div Dim NewsContent() As String Dim i As Integer i = 0 Dim startCollect As Boolean startCollect = False Dim childElem As IHTMLElement For Each childElem In targetDiv.Children Select Case UCase(childElem.tagName) ' 统一大写避免大小写问题 Case "H2" startCollect = True ' 遇到第一个h2后开启收集 ' 可选:如需保留标题,可在此处添加标题记录代码 ' ReDim Preserve NewsContent(i) ' NewsContent(i) = "标题:" & childElem.innerText ' i = i + 1 Case "P" If startCollect Then ReDim Preserve NewsContent(i) NewsContent(i) = childElem.innerText i = i + 1 End If End Select Next childElem ' 输出收集到的内容示例 Dim j As Integer For j = 0 To UBound(NewsContent) Debug.Print NewsContent(j) Next j
方案二:按
分组抓取后续
针对每个
,遍历其后的兄弟节点,直到遇到下一个
为止,精准收集对应标题下的所有
:
' 假设HTMLDoc是已加载完成的HTML文档对象 Dim targetDiv As HTMLDivElement Set targetDiv = HTMLDoc.querySelector("div.text-article_inside") Dim h2Tags As IHTMLElementCollection Set h2Tags = targetDiv.getElementsByTagName("H2") Dim NewsContent() As String Dim i As Integer i = 0 Dim currentH2 As IHTMLElement Dim nextSibling As IHTMLElement For Each currentH2 In h2Tags ' 记录当前h2标题(可选) ReDim Preserve NewsContent(i) NewsContent(i) = "标题:" & currentH2.innerText i = i + 1 Set nextSibling = currentH2.NextSibling ' 遍历后续兄弟节点,直到下一个h2或无节点 Do While Not nextSibling Is Nothing If UCase(nextSibling.tagName) = "P" Then ReDim Preserve NewsContent(i) NewsContent(i) = nextSibling.innerText i = i + 1 ElseIf UCase(nextSibling.tagName) = "H2" Then Exit Do ' 遇到下一个h2,停止当前分组收集 End If Set nextSibling = nextSibling.NextSibling Loop Next currentH2 ' 输出结果示例 Dim j As Integer For j = 0 To UBound(NewsContent) Debug.Print NewsContent(j) Next j
原代码问题说明
你之前的代码仅提取了目标div下的所有
标签,没有区分
前后的内容,也未处理
与
的交替顺序,导致会包含不需要的Paragraph0,且无法关联标题与对应段落。
内容的提问来源于stack exchange,提问作者Night_Guardian_0910
相关产品推荐
相关产品推荐

