如何利用一些 finance 数据库 api 批量获取股票信息?

如何利用一些 finance 数据库 api 批量获取股票信息?,第1张

使用Yahoo API获取股票信息。

一、2016年5月6日更新。根据最近频繁出现的数据超市,可以无限制获取相关数据,而不再需要使用爬虫等方式获取,这样不仅节省了极大资源,也有利于遍历数据。具体的方法不再赘述,列出来相关网站清单,开发者可自行到这些网站查询调用方法。

1.聚合数据 https://www.juhe.cn/

2.百度API数据 http://apistore.baidu.com/

3.发源地 http://www.finndy.com/

推荐使用聚合数据,其次配合百度API使用即可。

二、 方法1:http://table.finance.yahoo.com/table.csv?s=股票代码,返回结果:CSV格式的文件,返回列依次是“日期、开盘价、最高价、最低价、收盘价、成交量、复权价”。

三、 方法2:http://finance.yahoo.com/d/quotes.csv?s=股票代码&f=[自定义列]返回结果:CSV格式的文件,最后一个交易日的数据,列根据设定的自定义列返回。

'将如下宏代码粘贴到excel的VBA编辑器中,按F5运行即可,注意修改你的txt文件所在的目录。

Sub ReadTxt()

Dim Path As String, MyValue As String, fn As Long

Path = "C:\test" '假定你的24个txt文件处在C:\test 文件夹中,可以自行修改

fn = FreeFile

For i = 1 To 24

j = 0

Open "C:\test\" + Format(i, "000") + ".txt" For Input As fn

Do Until EOF(fn)

Line Input #fn, MyValue

j = j + 1

If j = 3 Then Exit Do

Loop

Close #fn

MyValue = Trim(MyValue)

If InStr(MyValue, ",") Then '假设各列的数据分隔符为中文逗号,如果是英文逗号,自行修改为InStr(MyValue, ",")

pos = inst(MyValue, ",")

If pos Then

pos = InStr(pos + 1, MyValue, ",")

If pos Then

pos = InStr(pos + 1, MyValue, ",")

If pos Then

MyValue = Mid(MyValue, pos + 1)

pos = InStr(MyValue, ",")

If pos Then MyValue = Left(MyValue, pos - 1)

End If

End If

End If

ElseIf InStr(MyValue, " ") Then '假设各列的数据分隔符为空格

Do

a = Len(MyValue)

MyValue = Replace(MyValue, " ", "")

Loop While a <>Len(MyValue)

pos = inst(MyValue, " ")

If pos Then

pos = InStr(pos + 1, MyValue, " ")

If pos Then

pos = InStr(pos + 1, MyValue, " ")

If pos Then

MyValue = Mid(MyValue, pos + 1)

pos = InStr(MyValue, " ")

If pos Then MyValue = Left(MyValue, pos - 1)

End If

End If

End If

ElseIf InStr(myvale, vbTab) Then '假设每一行的各列的分隔符为一个Tab制表符

Do

a = Len(MyValue)

MyValue = Replace(MyValue, vbTab + vbTab, vbTab)

Loop While a <>Len(MyValue)

pos = inst(MyValue, vbTab)

If pos Then

pos = InStr(pos + 1, MyValue, vbTab)

If pos Then

pos = InStr(pos + 1, MyValue, vbTab)

If pos Then

MyValue = Mid(MyValue, pos + 1)

pos = InStr(MyValue, vbTab)

If pos Then MyValue = Left(MyValue, pos - 1)

End If

End If

End If

End If

Cells(i, 1) = myvale '将提取的数据填充在第一列的各行中

Next

MsgBox "处理提取完毕!"

End Sub


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10009734.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存