MSXML2.XMLHTTP生成的结果与我在web浏览器中访问页面时的结果不同

MSXML2.XMLHTTP生成的结果与我在web浏览器中访问页面时的结果不同,http,vba,excel,msxml,Http,Vba,Excel,Msxml,我使用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源代码

我使用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请求,为什么找不到这些结果吗?

尝试从URL末尾删除片段标识符结果。虽然这对于URL来说是完全合法的语法,但我在回复中看到这一点时,它似乎在这里引发了一个问题:

 ERROR:  column "results" does not exist
LINE 1: ... = 'O') AND (parent_part_info IS NULL))) LIMIT 10#results OF...
当我在没有结果部分的情况下运行URL时,几秒钟后返回响应,在浏览器中访问URL时显示相同的两个结果


此外,MSXML2.XMLHTTP是MSXML2.XMLHTTP30的同义词,即最初来自Microsoft XML v3.0库的版本。如果您使用的是Microsoft XML v6.0库,那么通常建议将引用更改为MSXML2.XMLHTTP60。请参见尝试从URL末尾删除片段标识符结果。虽然这对于URL来说是完全合法的语法,但我在回复中看到这一点时,它似乎在这里引发了一个问题:

 ERROR:  column "results" does not exist
LINE 1: ... = 'O') AND (parent_part_info IS NULL))) LIMIT 10#results OF...
当我在没有结果部分的情况下运行URL时,几秒钟后返回响应,在浏览器中访问URL时显示相同的两个结果


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

当我使用您的代码时,返回一个错误页面,抱怨**列结果不存在**不知道为什么会出现这些错误,并且浏览器中的URL完全相同。我的答案似乎与Tim的评论有冲突。neubus.com网站的URL解析看起来很糟糕,因为在URI的查询部分之后,片段是完全合法的。来自RFC3986:通用URI语法由一系列组件组成,这些组件被称为scheme、authority、path、query和fragment。他们举的一个例子是foo://example.com:8042/over/there?name=ferretnoseIt也可能是XMLHTTP对象对字符进行了编码,导致URL被破坏。当我使用您的代码时,返回了一个错误页面,抱怨**列结果不存在**不知道为什么会出现错误,并且完全相同的URL工作在浏览器中。我的回答似乎与蒂姆的评论有冲突。neubus.com网站的URL解析看起来很糟糕,因为在URI的查询部分之后,片段是完全合法的。来自RFC3986:通用URI语法由一系列组件组成,这些组件被称为scheme、authority、path、query和fragment。他们举的一个例子是foo://example.com:8042/over/there?name=ferretnoseIt也可能是XMLHTTP对象正在对字符进行编码并导致URL损坏