2

目前,我可以通过使用YQL 控制台返回 xml 和 json 来获取股票报价,例如

从 csv 中选择符号、价格,其中 url='http://download.finance.yahoo.com/d/quotes.csv?s=IBM,YHOO,GOOG,MSFT&f=sl1d1t1c1ohgv&e=.csv' 和 columns='symbol,price ,日期,时间,变化,col1,高,低,col2'

我想从

http://download.finance.yahoo.com/d/quotes.csv?s=@^HSI&f=sl1d1t1c1ohgv&e=.csv

使用 YQL 控制台,所以我在 YQL 控制台中输入以下语句

从 csv 中选择符号、价格,其中 url='http://download.finance.yahoo.com/d/quotes.csv?s=@^HSI&f=sl1d1t1c1ohgv&e=.csv' 和 columns='symbol,price,date,time ,改变,col1,高,低,col2'

但它说我的链接无效。有什么想法和替代解决方案吗?

4

3 回答 3

3

您的查询几乎是正确的,但正如您所指出的,该 URL 被视为“无效”。解决方案是正确转义查询字符串值。

http://download.finance.yahoo.com/d/quotes.csv?s=@^HSI&f=sl1d1t1c1ohgv&e=.csv

变成

http://download.finance.yahoo.com/d/quotes.csv?s=%40%5EHSI&f=sl1d1t1c1ohgv&e=.csv

仅将这两个字符更改为其 % 编码值允许 YQL 拉回 CSV 数据。

select * from csv where url='http://download.finance.yahoo.com/d/quotes.csv?s=%40%5EHSI&f=sl1d1t1c1ohgv&e=.csv'

另外:YQL 不喜欢 CSV 在文件末尾有一个空行,这会在您尝试使用columnswhere 子句时引起问题。如果您同意调用列col<number>并希望跳过最后(空)行and col8 is not null,请在查询结束时使用。

于 2011-09-07T10:13:57.840 回答
0

这是正确的网址:

http://quote.yahoo.com/d/quotes.csv?s=<符号>&f=sl1d1t1c1ohgv&e=.csv

对于可口可乐:

http://quote.yahoo.com/d/quotes.csv?s=KO&f=sl1d1t1c1ohgv&e=.csv

结果:"KO",69.74,"9/2/2011","4:00pm",-0.71,69.7201,69.99,69.50,8765529

恒指:

http://quote.yahoo.com/d/quotes.csv?s= ^HSI&f=sl1d1t1c1ohgv&e=.csv

"^HSI",19616.40,"9/5/2011","4:01am",-596.51,19830.50,19830.50,19567.77,0

这是一个 API 文档:

http://www.gummy-stuff.org/Yahoo-data.htm

于 2011-09-05T07:01:18.873 回答
0

不幸的是,上述解决方案并不能完全回答问题,您只会得到前 51-52 个结果(第一页)而不是完整索引。

我认为这在原始 YQL 中是不可能的,但您需要编写一些代码来获取 HTML,然后遍历组件的每个页面并从中构建您自己的数据表。

我已经尝试了几种方法,并且有一个可以做到这一点的 C# 脚本,在 Python 中执行此操作也很简单,只需将其加载到 pandas 数据帧中,或者如果你想要的只是一个简单的列表/元组构建组件列表以测试投资组合的符号。

如果人们仍然对此解决方案感兴趣,我可以发布它的链接。

于 2014-01-19T20:05:31.957 回答