为什么在使用get方法和ie.navigate时,我会在getelement方法中得到不同的结果?

时间:2018-01-15 09:57:30

标签: vba msxml mshtml shdocvw.internetexplorer

我一直在寻找这个问题的答案。下面我有两部分代码将网站的html加载到内存中。结果相同。但是当我使用'Get'方法时,de getelements方法,例如getelementsbyclassname不起作用。我想使用更快的“获取”方法,但由于这种不同的结果我不能。在第一行代码getElementsByClassName工作,但在第二部分它的结果仍然没有。

我真的无法弄清楚为什么,我已经被困了一段时间了。我希望你能在这里遇到帮助。提前谢谢。

<i>Dim IE As New SHDocVw.InternetExplorer
Dim HTMLDoc As New MSHTML.HTMLDocument
Dim URL As String
Dim Element1 As MSHTML.IHTMLElement, Element2 As MSHTML.IHTMLElement, 
Element3 As MSHTML.IHTMLElement
Dim Elementen As MSHTML.IHTMLElementCollection

URL = "https://www.google.nl/?gfe_rd=cr&dcr=0&ei=KXNcWsHNJ9OB4gTcjqvwCA"

IE.Visible = True
IE.navigate URL

Do While IE.readyState <> READYSTATE_COMPLETE
DoEvents
Loop

Set HTMLDoc = IE.document
Set Element1 = HTMLDoc.getElementsByClassName("gsfi")(0)
Set Element2 = HTMLDoc.getElementById("lst-ib")
Debug.Print Element1.className, Element2.className


Dim XMLPage As New MSXML2.XMLHTTP60
Dim HTMLDoc As New MSHTML.HTMLDocument
Dim URL As String
Dim Element1 As MSHTML.IHTMLElement
Dim Element2 As MSHTML.IHTMLElement

URL = "https://www.google.nl/?gfe_rd=cr&dcr=0&ei=KXNcWsHNJ9OB4gTcjqvwCA"

XMLPage.Open "Get", URL, False
XMLPage.send

HTMLDoc.body.innerHTML = XMLPage.responseText

Set Element1 = HTMLDoc.getElementsByClassName("gsfi")(0)
Set Element2 = HTMLDoc.getElementById("lst-ib")
Debug.Print Element2.className</i>

0 个答案:

没有答案