YQL(Yahoo查询语言):雅虎财务分析师预估结果。

3
我正在尝试使用YQL获取Yahoo财务数据。我在YQL控制台上检查了“显示社区表”选项,以查看Yahoo标签下的数据库。
我发布了样本YQL:
https://developer.yahoo.com/yql/console/?q=show%20tables&env=store://datatables.org/alltableswithkeys#h=SELECT+*+FROM+yahoo.finance.analystestimate+WHERE+symbol%3D'PRLB'
但结果如下:
"results": {
  "results": {
  "symbol": "PRLB"
  }
}

我原本期望能够获得一些格式化数据,取自于这里,例如收益预估,EPS趋势等等。类似的表格也是如此。
我做错了什么?

相关:雅虎财经相关数据API是否更改(YQL控制台)? - kenorb
1个回答

0

表格的JS不再起作用,需要修复。

这是部分格式化的内容...

<?xml version="1.0" encoding="UTF-8"?>
<table xmlns="http://query.yahooapis.com/v1/schema/table.xsd">
    <meta>
        <author><!-- your name or company name --></author>
        <description><!-- description of the table --></description>
        <documentationURL><!-- url for API documentation --></documentationURL>
        <apiKeyURL><!-- url for getting an API key if needed --></apiKeyURL>
        <sampleQuery>select * from {table}</sampleQuery>
    </meta>
    <bindings>
        <select itemPath="" produces="XML">
            <urls>
                <url><!-- REST endpoint to select data from --></url>
            </urls>
            <inputs>
                <key id="" type="xs:string" paramType="query" />
            </inputs>
            <execute>
                <![CDATA[
                function getelement(row) { if(row.hasOwnProperty("p")) return(row.p.text()); return(row.font.text()); } 
                // Setup Query from finance.yahoo.com 
                var url="http://finance.yahoo.com/q/ae?s=" + symbol; 
                var restquery = y.rest( url ); 
                var rawresult = restquery.accept( "text/html" ).get().response; 
                var aequery = y.xpath( rawresult, "//table[@class='yfnc_tableout1']/tr[count(td)=0]/parent::*|" + "//table[@class='yfnc_tableout1']/tr/td/table" ); 
                // Process Results 
                var aedata = <results symbol={symbol}></results>; 
                var i = 0; while(i < aequery.length()) { 
                  var table = aequery[i]; 
                  var thead = table.tr[0]; 
var tname = thead.th[0].strong.text().toString().replace(/ /g, ""); 
var fname1 = thead.th[1].p.text().toString().replace(/\n.*/, ""); 
var fname2 = thead.th[2].p.text().toString().replace(/\n.*/, ""); 
var fname3 = thead.th[3].p.text().toString().replace(/\n.*/, ""); 
var fname4 = thead.th[4].p.text().toString().replace(/\n.*/, ""); 
fname1 = fname1.replace(/[\s\.]+/g, "").replace(/\&/,""); 
fname2 = fname2.replace(/[\s\.]+/g, "").replace(/\&/,""); 
fname3 = fname3.replace(/[\s\.]+/g, "").replace(/\&/,""); 
fname4 = fname4.replace(/[\s\.]+/g, "").replace(/\&/,""); 
var tblval = <{tname}></{tname}>; 
var j = 1; 
while(j < table.tr.length()) { 
var row = table.tr[j].td; 
var rname = row[0].p.text().toString().replace(/[\s\.]+/g, ""); 
rname = rname.replace(/\(.*\)/g,"").replace(/\%/,"").replace(/^(\d)/,"_$1"); 
rname = rname.replace(/\//, ""); 
var rval1 = getelement(row[1]); 
var rval2 = getelement(row[2]); 
var rval3 = getelement(row[3]); 
var rval4 = getelement(row[4]); 
tblval.appendChild(<{rname}> <{fname1}>{rval1}</{fname1}> <{fname2}>{rval2}</{fname2}> <{fname3}>{rval3}</{fname3}> <{fname4}>{rval4}</{fname4}> </{rname}>); j = j + 1; } aedata.appendChild(tblval); i = i + 1; } 
// Return aedata strucuture 
response.object = aedata;
                ]]>
            </execute>
        </select>
     </bindings>
</table>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接