我一直在尝试使用YQL来访问上市公司的基本面。但雅虎财务页面中显示的内容并未从YQL查询中返回。具体来说,我需要从资产负债表和损益表中检索数据,YQL中Apple的示例查询如下:
SELECT * FROM yahoo.finance.balancesheet WHERE symbol='AAPL'
然而,这只返回一个时间范围(每季度),而不是其他任何内容。
我的示例查询的YQL控制台链接是here
YQL无法访问数据,或者运行查询的方式有什么问题吗?如何通过YQL获取http://finance.yahoo.com/q/bs?s=AAPL中的完整数据列表?
答案 0 :(得分:5)
您的查询过去工作正常。然而,一两个月前,一些yahoo.finance YQL"表"停止了工作。
IOW,你做对了,但YQL坏了。
如果将鼠标悬停在YQL控制台左栏的yahoo.finance.balancesheet
条目上,则会显示标有 desc 和 src 的按钮。如果您点击 src ,它会为您提取抓取代码:http://www.datatables.org/yahoo/finance/yahoo.finance.balancesheet.xml。要使E4X JavaScript清晰可见,请右键单击并选择查看源代码或从命令行使用wget
或curl
。
请注意,代码提取http://finance.yahoo.com/q/bs?s=AAPL&quarterly,然后使用XPath查询来查找数据:
var query = y.xpath(rawresult, "//table[@class='yfnc_tabledata1']/tr/td/table/tr");
如果您将page提取到浏览器中并检查HTML,则会发现确实存在table
个类yfnc_tabledata1
。但是,它没有tr
直接孩子。显然,雅虎必须决定添加tbody
元素。这可能解释了为什么查询不再删除任何数据。
代码页列出了Ryan Hoium作为作者。有点谷歌搜索引导代码所在的github repository,以及其他Yahoo Finance表的代码。
可悲的是,只有yahoo.finance.sectors
表最近受到了关注。更改是在其XPath表达式中添加双斜杠。双斜线放松了直接的孩子"要求,例如,即使有干预tr
,也可以找到tbody
。但是,似乎新版本尚未推送到公共站点。