YQL 不从余额 sheet 或损益表返回数据

YQL not returning data from balance sheet or income statement

我一直在尝试使用YQL来访问上市公司的基本面。但是 YQL 查询并未返回 Yahoo 财经页面中显示的内容。具体来说,我需要从余额 sheet 和损益表中检索数据,YQL 中 Apple 的示例查询如下:

SELECT * FROM yahoo.finance.balancesheet WHERE symbol='AAPL'

然而,这只是 returns 一个时间范围(季度),除此之外别无其他。

Link 我的示例查询的 YQL 控制台是 here

YQL 是否无法访问数据,或者我 运行 查询的方式有什么问题吗?如何通过 YQL 获取完整的数据列表,如 http://finance.yahoo.com/q/bs?s=AAPL

您的查询过去工作正常。然而,一两个月前,一些 yahoo.finance YQL "tables" 停止工作。

IOW,你做得对,但是 YQL 坏了。

如果您将鼠标悬停在 YQL 控制台左栏中的 yahoo.finance.balancesheet 条目上,标有 descsrc 的按钮出现。如果您单击 src,它会为您获取抓取代码:http://www.datatables.org/yahoo/finance/yahoo.finance.balancesheet.xml. To make the E4X JavaScript 清晰,右键单击并 select 查看源代码或使用 wgetcurl 来自命令行。

请注意代码获取 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 和 class yfnc_tabledata1。但是,它没有 tr 直接子节点。显然,雅虎一定决定添加一个 tbody 元素。这可能解释了为什么查询不再抓取任何数据。

代码页将 Ryan Hoium 列为作者。稍微谷歌一下就可以找到代码所在的 github repository,以及其他 Yahoo Finance table 的代码。

遗憾的是,最近只有 yahoo.finance.sectors table 受到关注。更改是在其 XPath 表达式中添加双斜杠。双斜杠放宽了 "direct child" 的要求,例如,即使中间有 tbody,也允许仍然找到 tr。但是,似乎新版本尚未推送到 public 站点。