VBA HTTP请求需要10秒以上

时间:2016-03-26 03:26:29

标签: excel vba excel-vba web-scraping xmlhttprequest

任何人都可以解释为什么这段代码需要很长时间才能加载?我在浏览器中试过它,加载只需要大约4秒钟。有什么办法可以禁止在VBA web scrape中加载图像吗?

(请注意等待在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 行,这需要超过10秒才能加载,这在我看来是多余的?)

body

2 个答案:

答案 0 :(得分:3)

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

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

有一篇关于如何在excel中正确使用这篇文章的博文:http://dailydoseofexcel.com/archives/2006/10/09/async-xmlhttp-calls/

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

答案 1 :(得分:0)

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

需要考虑更多的请求选项,根据网站的不同,效率可能会有很大差异,没有一个是最快或最慢的。有时其中一个请求经常需要10秒钟,而另一个请求只需要2秒钟。

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