从YQL获取股市指数的组成部分

时间:2011-09-05 02:36:38

标签: xml indexing finance yql stockquotes

目前,我可以通过使用YQL console

返回xml和json来获取股票报价

选择符号,价格来自csv,其中url ='http://download.finance.yahoo.com/d/quotes.csv?s = IBM,YHOO,GOOG,MSFT& f = sl1d1t1c1ohgv& e = .csv'和columns ='符号,价格,日期,时间,更改,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 ='符号,价格,日期,时间,变化,COL1,高,低,COL2'

但它说我的链接无效。任何想法和替代解决方案?

3 个答案:

答案 0 :(得分:3)

您的查询非常接近正确,但您注意到该网址被视为“无效”。解决方案是正确转义查询字符串值。

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在文件末尾有空行,这会在您尝试使用columns where子句时导致问题。如果您可以使用名为col<number>的列并希望跳过最后一行(空),则在查询结束时使用and col8 is not null

答案 1 :(得分:0)

这是正确的网址:

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

可口可乐:

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

结果:“KO”,69.74,“9/2/2011”,“下午4:00”, - 0.71,69.7201,69.99,69.50,8765529

对于HSI:

http://quote.yahoo.com/d/quotes.csv?s= ^ HSI&安培; F = sl1d1t1c1ohgv急症=的.csv

“^ HSI”,19616.40, “2011年9月5日”, “上午04时01”, - 596.51,19830.50,19830.50,19567.77,0

这是一个API文档:

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

答案 2 :(得分:0)

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

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

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

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