使用VBA从网站提取数据什么都没得到

时间:2018-01-02 21:08:40

标签: vba web extract innerhtml

我使用以下代码从网站读取和提取数据。但是在特定网址(http://www.iamf.ir)中存在问题!

    Dim HTML_Content As HTMLDocument
    Dim dados As Object

    'Create HTMLFile Object
    Set HTML_Content = New HTMLDocument

    'Get the WebPage Content to HTMLFile Object
    With CreateObject("msxml2.xmlhttp")
        .Open "GET", "http://www.iamf.ir", False
        .send
        HTML_Content.body.innerHTML = .responseText
        Debug.Print .responseText                ' it's OK
        Debug.Print HTML_Content.body.innerHTML  ' it show nothing! (problem is here)
    End With

1 个答案:

答案 0 :(得分:0)

这应该是你的问题的答案,虽然我不认为它真的解决了你的问题。

您对本网站所做的XMLHTTP请求以空体回应,您可以从行Debug.Print .responseText注意到:

<HTML>
    <HEAD>
        <TITLE>&#1575;&#1605;&#1740;&#1606; &#1570;&#1588;&#1606;&#1575; &#1575;&#1740;&#1585;&#1575;&#1606;&#1740;&#1575;&#1606;</TITLE>
        <META NAME="Keywords" CONTENT="">
        <META HTTP-EQUIV="Refresh" CONTENT="0;URL=http://www.iafi.ir">
        <META NAME="Description" CONTENT="">
    </HEAD> 
    <BODY> <-- body is empty
    </BODY>
</HTML>

这就是为什么当你打印.body.innerHTML的{​​{1}}时,你会得到一个空字符串。

某些网站的构建方式只有完整的堆栈执行(即执行XMLHTTP请求时不会执行的JavaScript执行)才能正确呈现您在浏览器中看到的内容。 在您的特定情况下,您可能需要根据不可见的浏览器获取执行速度较慢但始终有效的信息。你可以看看我前段时间写过的this answer有想法。