我正在尝试从 Finance.yahoo.com 下载 1000 支股票的历史股价数据。该网站仅在单个页面上显示 60 天的数据,因此我必须循环遍历我正在下载的时间段以及不同证券的循环。我使用以下代码访问相关页面。
Set httpObject = CreateObject("MSXML2.XMLHTTP")
httpObject.Open "GET", url, False
httpObject.send
webObject.body.innerHTML = httpObject.responseText
对于我访问的 99% 的数据来说,这就像一个魅力。但时不时地,网站返回的对象会显示为空,即使完全相同的 URL 将在 Internet Explorer 中显示正确的数据。如果我仅针对该 URL 重新运行代码,下次可能会失败,也可能不会失败。
我想知道是否有更稳定/一致的方式来使用上述方法。我以前实现过 InternetExplorer.Application 方法来下载数据,但发现速度慢得多且麻烦。
最佳答案
检查就绪状态。
httpObject.ReadyState = 4
这意味着它已完成加载。然后就可以查看状态了
httpObject.Status = 200
这意味着您没有弄乱 URL。如果readystate为4且status为200,则可以读取responseText。
关于excel - 在Excel VBA中使用MSXML2.XMLHTTP从网站中提取大量文本数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22125321/