MSXML2.XMLHTTP打破雅虎股票代码请求

时间:2017-06-08 11:08:38

标签: excel vba csv https

我有一个很好的VBA脚本,允许我从Yahoo下载股票代码信息到Excel。 雅虎最近改变了他们的网络界面,过去工作的下载命令现在已经停止了。 以前的命令具有以下结构: -

" http://chart.finance.yahoo.com/table.csv?s=TSCO.L&a=5&b=09&c=2016&d=5&e=26&f=2016&g=d&ignore=.csv"

新命令的外观如下: -

" https://query1.finance.yahoo.com/v7/finance/download/TSCO.L?period1=1465456200&period2=1466925000&interval=1d&events=history&crumb=Ns6veY6jrcA"

期间1& period2是日期的时代表示,而'crumb'我相信每个向雅虎服务器发送下载请求的机器都是唯一的。 我认为这在合理的时间内保持不变,所以不必改变。

如果我将https请求粘贴到浏览器中就可以了。但是,我用来检查数据存在并随后下载数据的例程不再有效。

这是整个代码的缩短版本,如果有人想要尝试一下,你可能不得不用你的crumb值替换我的crumb值,如果你按照这个链接可以找到: - https://uk.finance.yahoo.com/quote/TSCO.L/history?p=TSCO.L并将鼠标悬停在'下载数据'链接。

`Function IsResourceAvailable(strUrl As String)As Boolean

Dim objXhr As Object 'MSXML2.XMLHTTP60
Dim strStatus As String

Set objXhr = CreateObject("MSXML2.XMLHTTP") 'New XMLHTTP60
With objXhr
    .Open "GET", strUrl, False
    .send
    strStatus = .Status
End With

'HTTP response of 200 = OK
IsResourceAvailable = (strStatus = "200")

结束功能'

' Sub dloadDebug()

Dim strUrl As String
Dim blnAvailable As Boolean

strUrl = "https://query1.finance.yahoo.com/v7/finance/download/TSCO.L?period1=1465456200&period2=1466925000&interval=1d&events=history&crumb=Ns6veY6jrcA"

blnAvailable = IsResourceAvailable(strUrl)
Workbooks.Open Filename:=(strUrl)

结束Sub`

上述任何一项现在都没有用,有人能指出我正确的方向吗?

非常感谢

GLW

0 个答案:

没有答案