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



我正在尝试从 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,状态为 200,则可以读取 responseText。

我遇到了同样的问题,得到了一个空的回复,.Status = 0(即确定)。事实证明,我的问题是当您进入浏览器时,http会重定向到https。当我在我的请求中更改它时,它很好。

对于通用函数,您可以尝试 http,如果您得到 .Status = 0.responseText = "" ,然后重复但使用 https。

相关内容

  • 没有找到相关文章

最新更新