Excel VBA IE NAVIGATE方法未返回完整的HTML页面



我正试图从我传递的url中提取参与者的名字,对于我的URL,我需要从HTML页面中提取"Will Smith"。网页

我知道如何使用标签、classnaem等从HTML页面中提取元素。

但我面临的问题是,当我传递URL时,"https://ssl.ofdb.de/film/138627,I-Am-Legend"在回复文本中,我没有收到完整的HTML页面,因此我无法提取内容"Will Smith"。

我尝试了其他方法,如MSXML2.XMLHTTP60也都只返回部分HTML页面

我在这里附上了我的代码,任何人都请帮助

Sub Fetch_Info()
Dim ie As New InternetExplorer
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
ie.Top = 0
ie.Left = 700
ie.Width = 1000
ie.Height = 750
ie.AddressBar = 0
ie.StatusBar = 0
ie.Toolbar = 0
ie.navigate "https://ssl.ofdb.de/film/138627,I-Am-Legend"
Do
DoEvents
Loop Until ie.readyState = READYSTATE_COMPLETE
Application.Wait Now + TimeValue("00:00:04")
Dim doc As HTMLDocument
Set doc = ie.document
doc.Focus
Debug.Print doc.DocumentElement.innerHTML
End Sub

您可以使用以下css选择器。querySelector返回与css模式匹配的第一个节点。该模式是[itemprop='actor'] span,其寻找具有具有值为actor的属性itemprop的父元素的子span。注意,我正在ie.document节点下工作。

Debug.Print ie.document.querySelector("[itemprop=actor] span").innerText

该内容是静态的,所以您可以使用xhr并避免浏览器开销。响应标头字符集为none,因此需要响应正文。

Option Explicit
Public Sub GetActor()
Dim xhr As MSXML2.XMLHTTP60, html As MSHTML.HTMLDocument
'required VBE (Alt+F11) > Tools > References > Microsoft HTML Object Library ;  Microsoft XML, v6 (your version may vary)
Set xhr = New MSXML2.XMLHTTP60
Set html = New MSHTML.HTMLDocument
With xhr
.Open "GET", "https://ssl.ofdb.de/film/138627,I-Am-Legend", False
.send
html.body.innerHTML = StrConv(.responseBody, vbUnicode)
End With
ActiveSheet.Cells(1, 1) = html.querySelector("[itemprop=actor] span").innerText
End Sub

最新更新