如何访问HTML文件通过XMLHTTP请求创建的文档

时间:2016-08-02 09:55:29

标签: vba web-scraping xmlhttprequest

我从XMLHTTP请求中得到responseText

Set XMLHttp = CreateObject("MSXML2.XMLHTTP")
XMLHttp.Open "GET", urlPiece, False
XMLHttp.send

我存储在内存中创建的HTML文件中:

Set htmlResponse = CreateObject("htmlfile")
htmlResponse.body.innerHTML = XMLHttp.responseText

如果我查看调试器上的对象htmlResponse,我会看到普通HTML文件的结构。但是,当我尝试获取文档时,我没有成功:

Set doc = htmlResponse.document '<-- Invalid method or property

我做错了什么?在我的完整代码下面,如果你想测试真实样本:

Sub getPrice()

    Dim urlPiece As String: urlPiece = "https://fr.finance.yahoo.com/q?s="
    Dim htmlResponse As Object
    Dim XMLHttp As Object

    Set htmlResponse = CreateObject("htmlfile")
    ccyPair = "XAUUSD"
    urlPiece = urlPiece & ccyPair & "=X"
    Set XMLHttp = CreateObject("MSXML2.XMLHTTP")
    XMLHttp.Open "GET", urlPiece, False
    XMLHttp.send
    htmlResponse.body.innerHTML = XMLHttp.responseText
    Set doc = htmlResponse.document '<-- error here 

End Sub

1 个答案:

答案 0 :(得分:1)

我自己发现了这个错误。 与JavaScript不同,documentbody的{​​{1}}中定义,并且本身不是对象的属性。 因此:

HTMLfile

应该是

Set doc = htmlResponse.document