任何人都可以解释为什么这段代码需要很长时间才能加载?我在浏览器中试过它,加载只需要大约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
答案 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")