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

如何用VBA及选择器提取符合条件的HTML DIV文本并导出至Excel

问题分析与代码修改

原代码的核心问题是通过两个独立的元素集合按索引匹配,逻辑不严谨——若页面中两类元素数量不等或位置不对应,会导致错误或取到非目标内容。同时class选择器的匹配方式不够精确,容易误匹配。

修改后的代码

Function TestFunction()

    Dim html As New HTMLDocument
    Dim ele1 As Object, targetEle As Object
    Dim VarGetContent As String
    Dim x As Long
    Dim Url As String
    
    Url = "https:xxxxxxxxxxxxxxxxxx"
            
    With CreateObject("MSXML2.XMLHTTP.6.0")
        .Open "GET", Url, False
        .send
        html.body.innerHTML = .responseText
    End With
     
    ' 精确匹配目标标签的多类选择器
    Set ele1 = html.querySelectorAll(".align-text-top.pr-1.md\:pr-7.w-41")
               
    For x = 0 To ele1.Length - 1
        ' 去除文本前后空格后匹配,避免空格干扰
        If Trim(ele1.Item(x).innerText) = "NUMBER:" Then
            ' 获取当前标签的下一个兄弟元素(对应结构中的目标DIV)
            Set targetEle = ele1.Item(x).nextElementSibling
            ' 验证目标元素的class是否符合要求,避免误取
            If Not targetEle Is Nothing And targetEle.className = "hn-4 md:ml-1" Then
                VarGetContent = targetEle.innerText
                MsgBox VarGetContent
                ' 若只需要第一个匹配结果,可添加Exit For跳出循环
                ' Exit For
            End If
        End If
    Next x
  
End Function

关键修改点

  • 精确选择器:将模糊的包含匹配[class*='xxx']改为多类选择器.align-text-top.pr-1.md\:pr-7.w-41,仅匹配同时拥有这些class的元素;其中md:pr-7的冒号用\转义,符合CSS选择器语法规则。
  • 兄弟节点定位:直接通过nextElementSibling获取符合条件标签的相邻兄弟元素,完全贴合HTML结构的层级关系,彻底避免索引不匹配的问题。
  • 容错处理:添加目标元素存在性和class匹配验证,防止页面结构变化导致的运行错误;用Trim()处理文本,避免原文本前后空格导致的匹配失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 17:10:18