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

问题描述 投票:0回答:1

我使用下面的代码来读取和提取网站数据。但在特定的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
vba web extract innerhtml
1个回答
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.innerHTMLHTML_document时,你得到一个空字符串。

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

© www.soinside.com 2019 - 2024. All rights reserved.