【问题标题】:extract data from website using VBA get nothing使用 VBA 从网站中提取数据一无所获
【发布时间】:2018-01-02 21:08:39
【问题描述】:

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

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

    您对该网站所做的 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有一个想法。

    【讨论】:

    • 谢谢兄弟。我试过你的解决方案。没关系,但我遇到了奇怪的问题。请下载我的 Excel 文件(ufile.io/xc97w)。有 2 个按钮几乎相似。按钮 1 不正常(为什么?),按钮 2 正常。提前致谢。
    • @AliM67 如果您有新问题,请打开一个新线程,以便其他人可以帮助您(这里只有我会看到此评论)。无论如何,分享您的代码并且不要要求下载任何东西,我认为没有人会冒这个风险。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-29
    • 1970-01-01
    • 2014-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多