使用 VBA 从网站提取数据什么也得不到

extract data from website using VBA get nothing

我使用下面的代码从网站读取和提取数据。但是具体URL(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

这应该是您问题的答案,但我认为它并不能真正解决您的问题。

您向该网站发出的 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>

这就是为什么当您打印 HTML_document.body.innerHTML 时,您会得到一个空字符串。

有些网站的构建方式只有全栈执行(即 JavaScript 执行,当您执行 XMLHTTP 请求时不会发生)才能正确呈现您在您的网站中看到的内容浏览器。 在您的特定情况下,您可能需要让信息执行速度较慢但始终基于不可见浏览器进行抓取。你可以查看我前段时间写的 this answer 来了解一下。