在Excel VBA中使用MSXML2.XMLHTTP从网站中提取大量文本数据

sin*_*s82 8 excel vba msxml html-content-extraction

我试图从finance.yahoo.com下载千年股票的历史股票价格数据.该网站仅在一个页面上显示60天的数据,因此我必须循环浏览我下载的时间段以及不同证券的循环.我使用以下代码访问相关页面.

Set httpObject = CreateObject("MSXML2.XMLHTTP")
httpObject.Open "GET", url, False
httpObject.send
webObject.body.innerHTML = httpObject.responseText
Run Code Online (Sandbox Code Playgroud)

这就像我访问的99%数据的魅力.但是,不时地,网站返回的对象都是空的,即使完全相同的URL会在Internet Explorer中显示正确的数据.如果我重新运行该URL的代码,则下次可能会或可能不会失败.

我想知道是否有更稳定/一致的方式使用上述方法.我之前已经实现了InternetExplorer.Application方法来下载数据,但发现它要慢得多,也很麻烦.

Dic*_*ika 7

检查readystate.

httpObject.ReadyState = 4
Run Code Online (Sandbox Code Playgroud)

这意味着它已完成加载.然后你可以检查状态

httpObject.Status = 200
Run Code Online (Sandbox Code Playgroud)

这意味着你没有弄乱网址.如果readystate为4且status为200,则可以读取responseText.