HTTP 请求耗时 10 秒以上

HTTP request taking 10+ seconds

谁能解释为什么加载这段代码需要这么长时间?我已经在浏览器中试过了,加载只需要大约 4 秒。有什么办法可以禁止在 VBA 网络抓取中加载图像?

(请注意,等待时间在 send 行,加载时间超过 10 秒,在我看来这是否过长?)

Sub FetchIndividualURL()
    Dim XMLHTTP as Object
    Dim HTMLdoc as Object
    Set XMLHTTP = CreateObject("MSXML2.serverXMLHTTP")

    URL = "http://www.gumtree.com.au/s-ad/lansvale/cars-vans-utes/2011-subaru-forester-x-grey-wagon/1106783884"

        With XMLHTTP
            .Open "GET", URL, False
            .setRequestHeader "Content-Type", "text/xml"
            .send
            Set HTMLdoc = CreateObject("HTMLFile")
            HTMLdoc.body.innerhtml = .responsetext
        End With

End Sub

Xmlhttprequest.send 不加载图片,也不加载 js 代码。这将获取 url 引用的资源的原始客户端代码。您无法在此代码中优化任何内容。

您可以做的是使请求异步,并让事件处理程序处理传入的数据。您可以有多个 Xmlhttprequest 对象并行下载数据。

在 excel 中有一篇很好的博客 post 介绍如何正确执行此操作:http://dailydoseofexcel.com/archives/2006/10/09/async-xmlhttp-calls/

它描述了如何进行异步调用,如何以及为什么对事件处理程序使用包装 class。

接受的答案并不完全正确。

需要考虑的请求选项更多,根据网站的不同,效率会有很大差异,none 最快或最慢。有时,其中一个请求经常花费 10 秒以上,而另一个请求仅花费 2 秒。

Set XMLHTTP = CreateObject("MSXML2.XMLHTTP.6.0")
Set http = CreateObject("WinHttp.WinHttpRequest.5.1")