1

我使用 Excel VBA 通过以下方式下载某些网站的页面源:

    Public Function GetPage(URL As String) As String
        Dim oX As New MSXML2.XMLHTTP
        oX.Open "Get", URL, False
        oX.Send
        GetPage = oX.responseText
    End Function

但是,经过仔细检查后,我注意到此代码返回的 HTML 源代码与我使用 Web 浏览器访问该站点时返回的 HTML 源代码不同。

这是我正在访问的网站。在页面底部,它列出了两个结果。现在,如果我使用我的 GetPage 函数访问该 URL,它会返回主页的 HTML,但它不包含任何结果——源明确表示“找到 0 个结果”。是什么赋予了?它似乎没有使用 JavaScript 来替换某些 HTML 元素,所以我很茫然。我确实注意到,当我自己访问该站点时,它运行缓慢,但是当我运行 VBA HTTP 请求时,它似乎几乎是瞬间完成的。也许我必须等待什么?

如果我通过 VBA 发出 HTTP 请求,有谁知道为什么我找不到这些结果?

4

1 回答 1

4

尝试#results从 URL 的末尾删除片段标识符。虽然这对于 URL 来说是完全合法的语法,但正如我在响应中看到的那样,它似乎在这里引起了问题:

 ERROR:  column "results" does not exist
LINE 1: ... = 'O') AND (parent_part_info IS NULL))) LIMIT 10#results OF...

当我在没有该#results部分的情况下运行 URL 时,响应会在几秒钟后返回,并在浏览器中访问 URL 时显示相同的 2 个结果

也是- 即最初来自“Microsoft XML, v3.0”库的版本MSXML2.XMLHTTP的同义词。MSXML2.XMLHTTP30如果您使用的是“Microsoft XML, v6.0”库,那么通常建议将引用更改为MSXML2.XMLHTTP60. 请参阅此 Microsoft 博客文章

于 2012-12-03T23:52:58.487 回答