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

标签 excel vba msxml html-content-extraction

我正在尝试从 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/

相关文章:

python - pandas:用列中最后一个非 NaN 值替换 NaN

xml - 按日期过滤 XPath 查询

xml - VBScript、MSXML 和命名空间

xmlhttprequest - 如何使Microsoft XmlHttpRequest荣誉缓存控制指令

vba - Excel宏动态范围

c# - Excel Interop 和 CSV 文件的日期转换问题

java - 逐行写入 XSSF 文件以输出流? (java 中的 POI)

excel - 如何在 VBA 中的另一个函数中调用一个函数?

vba - 模块变量在 CodeModule.InsertLines 调用后无法存活

excel - 如何读取含有汉字的.txt文件?