VBA网页抓取获取SubNav7_1下a标签href属性报运行时错误13求解
解决方法
错误原因
- 你通过
getElementById("SubNav7_1")获取到的是<li>列表元素,href属性属于该li节点内部嵌套的<a>子元素,直接对li元素取href属性无法得到正确值,触发类型不匹配的运行时错误13 - 变量
link为字符串类型,不能使用Set关键字赋值,Set仅用于给对象类型的变量赋值 - 获取到的href为相对路径,需要拼接站点域名才能得到完整可访问的URL
修正后代码
Public Sub GetContents() Dim XMLReq As New MSXML2.XMLHTTP60 Dim HTMLDoc As New MSHTML.HTMLDocument Dim liNode As MSHTML.HTMLLIElement Dim link As String ' 基础域名用于拼接相对路径 Const baseDomain As String = "https://echa.europa.eu" ' 发送HTTP请求获取页面内容 XMLReq.Open "Get", "https://echa.europa.eu/registration-dossier/-/registered-dossier/15460", False XMLReq.send HTMLDoc.body.innerHTML = XMLReq.responseText ' 先判断目标节点是否存在,适配无毒理学信息板块的场景 Set liNode = HTMLDoc.getElementById("SubNav7_1") If Not liNode Is Nothing Then ' 获取li下的a标签,提取href属性后拼接为完整链接 link = baseDomain & liNode.getElementsByTagName("a")(0).getAttribute("href") Debug.Print link Else Debug.Print "无有毒理学信息" End If End Sub
运行结果
执行后控制台会输出你期望的完整链接:https://echa.europa.eu/registration-dossier/-/registered-dossier/15460/7/1
内容的提问来源于stack exchange,提问作者Nick
相关产品推荐
相关产品推荐

