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

VBA网页爬虫修改:遍历EndpointContent类元素抓取数据避免重复结果

错误原因

HTMLDoc.getElementsByClassName("EndpointContent")返回的是DOM元素集合,无法直接对集合调用getElementsByTagName方法,必须遍历集合内的单个EndpointContent节点后,再在单个节点下查询子元素。


修改后代码(完全保留原有逻辑结构)

Public Sub GetContents()
    
    Dim XMLReq As New MSXML2.XMLHTTP60
    Dim HTMLDoc As New MSHTML.HTMLDocument
    Dim EndpointNode As Object ' 存储单个EndpointContent节点
    Dim SubSectList As Object, SubSects As Object, SubSect As Object
    
    XMLReq.Open "Get", "https://echa.europa.eu/brief-profile/-/briefprofile/100.002.098", False
    XMLReq.send
     
    HTMLDoc.body.innerHTML = XMLReq.responseText

    ' 获取所有EndpointContent节点集合
    Set SubSectList = HTMLDoc.getElementsByClassName("EndpointContent")
    
    ' 外层遍历每一个EndpointContent研究数据区块
    For Each EndpointNode In SubSectList
        ' 单个区块内查询所有dt标签,沿用原有提取逻辑
        Set SubSects = EndpointNode.getElementsByTagName("dt")
        ' 内层遍历当前区块的所有dt标签提取键值对
        For Each SubSect In SubSects
            Debug.Print SubSect.innerText & " : " & SubSect.NextSibling.innerText
        Next SubSect
    Next EndpointNode

End Sub

说明

  • 代码引用要求和原有代码完全一致,需要提前在VBA编辑器中勾选Microsoft XML, v6.0和Microsoft HTML Object Library
  • 仅新增了一层区块遍历逻辑,原有数据提取规则完全保留,输出格式和你之前的结果一致,自动过滤了重复的摘要类数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 17:45:08