从url到excel的按位置靠近的VBA代码
我正在尝试从url到excel获取连接、基础结构和邻域信息。下面是我尝试过的vba代码,但我收到错误运行时错误“91”:对象变量或未设置块变量从url到excel的按位置靠近的VBA代码,vba,web-scraping,msxml,Vba,Web Scraping,Msxml,我正在尝试从url到excel获取连接、基础结构和邻域信息。下面是我尝试过的vba代码,但我收到错误运行时错误“91”:对象变量或未设置块变量 子测试() 作为HTMLDocument的Dim oHtml 作为对象的模糊元素 设置oHtml=新HTMLDocument 使用CreateObject(“WINHTTP.WinHTTPRequest.5.1”) .打开“获取”https://www.99acres.com/dasnac-the-jewel-of-noida-sector-75-no
子测试()
作为HTMLDocument的Dim oHtml
作为对象的模糊元素
设置oHtml=新HTMLDocument
使用CreateObject(“WINHTTP.WinHTTPRequest.5.1”)
.打开“获取”https://www.99acres.com/dasnac-the-jewel-of-noida-sector-75-noida-npxid-r14046?src=NPSRP&sid=UiB8IFFTIHwgUyB8IzEjICB8IG5vaWRhIzUjIHwgQ1AyNSB8IFkgIzE4I3wgIHwgMjUgfCMzIyAgfCA3ICM1I3wgIHwgMjMgfCM0MyMgIHw="
.发送
oHtml.body.innerHTML=.responseText
以
ele3=oHtml.getElementById(“locHighlightsSlide”)
范围(“A1”)=ele3.innerText
End Sub
您可以使用CSS选择器,这些选择器是用于选择元素的模式。对于您的HTML示例模式,有效的模式有:
.vsp项。highlightsCard:First child
.vsp item.highlightsCard:n子项(2)
.vsp item.highlightsCard:last child
.highlightsCardHeading
,即通过className
选择元素
CSS查询结果: 第1列连接: 第2栏基础设施: 第3栏邻里: 标题: 观察结果:上述查询结果表明,
列1-3
需要单个节点,即.querySelector
;请注意,0
是返回的唯一匹配项。然而,头
需要.querySelectorAll
,返回节点列表,正如我们可以看到0-2
返回的那样
VBA: 我无法访问网站进行查询,但
.querySelector
方法属于HTMLDocument,通常(使用HTMLDocument变量oHTML
):
对于单个节点:
oHtml.querySelector(".vsp-item.highlightsCard:first-child")
对于节点列表:
oHtml.querySelectorAll(".highlightsCardHeading")
如果是节点列表,则使用以下命令迭代其项:
Dim headerNodeList As Object, i As Long
Set headerNodeList = oHtml.querySelectorAll(".highlightsCardHeading")
For i = 0 To headerNodeList.Length - 1
Debug.Print headerNodeList.item(i).innerText '<==this way '
'Debug.Print headerNodeList(i).innerText '<==Or this method
Next i
注意事项: 我无法从您的请求中检查
.responseText
(或者更确切地说,由于与站点的连接失败,它没有意义)。这种方法可能不会返回所需的信息,特别是对于动态加载的页面。不过,我相信WinHTTPRequest.5.1
有一个您可以使用的响应状态
在这种情况下,您可能需要使用另一种方法,例如基于IE浏览器的方法,并等待页面加载。您仍然可以使用.querySelector
或.querySelectorAll
方法HTMLDocument
脚本示例:
IE
的方法如下:信息:
您需要这些字段中的哪些信息:徽标?你甚至不觉得有必要澄清你的问题,你的输出可能是怎样的。嗨,QHarr,谢谢你的帮助!!!你提供了完整的信息,这对我真的很有帮助!!!!saransh愉快
Dim col1Node As Object: Set col1Node = oHtml.querySelector(".vsp-item.highlightsCard:first-child"): Debug.Print col1Node.innerText
Dim col2Node As Object: Set col2Node = oHtml.querySelector(".vsp-item.highlightsCard:nth-child(2)"): Debug.Print col2Node.innerText
Dim col3Node As Object: Set col3Node = oHtml.querySelector(".vsp-item.highlightsCard:last-child") : Debug.Print col3Node.innerText