Xml 从YQL中提取股票市场指数的成分

Xml 从YQL中提取股票市场指数的成分,xml,indexing,finance,yql,stockquotes,Xml,Indexing,Finance,Yql,Stockquotes,目前,我可以通过使用like返回xml和json来获取股票报价 从csv中选择符号、价格,其中url=http://download.finance.yahoo.com/d/quotes.csv?s=IBM,YHOO,GOOG,MSFT&f=sl1d1t1c1ohgv&e=.csv'和列='symbol,price,date,time,change,col1,high,low,col2' 我想从以下位置获取完整的组件列表 http://download.finance.yahoo.com/d/q

目前,我可以通过使用like返回xml和json来获取股票报价

从csv中选择符号、价格,其中url=http://download.finance.yahoo.com/d/quotes.csv?s=IBM,YHOO,GOOG,MSFT&f=sl1d1t1c1ohgv&e=.csv'和列='symbol,price,date,time,change,col1,high,low,col2'

我想从以下位置获取完整的组件列表

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

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

从csv中选择符号、价格,其中url=http://download.finance.yahoo.com/d/quotes.csv?s=@^HSI&f=SL1D1C1OHGV&e=.csv'和列=“符号、价格、日期、时间、变化、列1、高、低、列2”


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

这是正确的url:

可口可乐:

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

恒生指数:

^HSI&f=SL1D1C1OHGV&e=.csv

^恒生指数,19616.40,9/5/2011,4:01上午-596.5119830.5019830.5019567.77,0

以下是API文档:


您的查询几乎是正确的,但正如您所指出的,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在文件末尾有一个空行,当您尝试使用columns where子句时,这将导致问题。如果您同意使用名为col的列,并且希望跳过最后一个空行,那么请使用,并且在查询结束时col8不为null。

上述解决方案无法完全回答问题。不幸的是,您将只在第一页获得前51-52个结果,而不是完整的索引

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

我已经尝试了几种方法,并且有一个C脚本可以做到这一点,在Python中这样做也很简单,只需在进行时将其加载到pandas dataframe中,或者只加载一个简单的列表/元组(如果您只需要符号来建立一个组件列表,用于测试公文包)


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

谢谢您的回答,但我希望获得成分列表,因为恒生指数是一种股票市场指数。在您的回答中,符号HSI只是一个伪值,因此您可以看到有几个字段为N/A。我将HSI的符号更正为^HSI,因为它是一个索引。我提供的url是正确的url,但您需要检查finance.yahoo.com以查看他们分配给它的内容,从而确保使用了正确的符号。是的,但首先此url获取^hsi本身的数据,而不是组件的数据。其次,在YQL控制台中,我不能将此链接与以下语句一起使用:select symbol,price from csv,其中url='和columns='symbol,price,date,time,change,col1,high,low,col2'。不管怎样,谢谢。这正是我想要的。虽然我已经在应用程序中进行了URL编码,但我需要先对转义字符进行编码,然后再对整个查询进行编码。更重要的是,我错过了角色@。在文档中找不到它。非常感谢你!!!不幸的是,这种类型的URLhttp://download.finance.yahoo.com/d/quotes.csv?s=%40%5EHSI&f=sl1d1t1c1ohgv&e=.csv 将不再返回可用结果,因为Yahoo更改了界面。