Xml 从YQL中提取股票市场指数的成分
目前,我可以通过使用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”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
但它说我的链接无效。有什么想法和替代方案吗?这是正确的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更改了界面。