yahoo.finance相关数据api是否发生了变化(YQL控制台)?

Dev*_*ode 6 yql yahoo-api yahoo-finance

我正在尝试使用yql进行雅虎财务数据.我检查了YQL控制台上的Show Community Table,以查看Yahoo标签下的数据库.我可以看到它下面的表格,但我没有得到结果,如下所示:::

select*from yahoo.finance.analystestimate where where in('YHOO')

    {
 "query": {
  "count": 1,
  "created": "2016-03-28T10:25:01Z",
  "lang": "en-US",
  "diagnostics": {
   "url": [
    {
     "execution-start-time": "1",
     "execution-stop-time": "767",
     "execution-time": "766",
     "content": "http://www.datatables.org/yahoo/finance/yahoo.finance.analystestimate.xml"
    },
    {
     "execution-start-time": "771",
     "execution-stop-time": "1821",
     "execution-time": "1050",
     "content": "http://finance.yahoo.com/q/ae?s=YHOO"
    }
   ],
   "publiclyCallable": "true",
   "javascript": {
    "execution-start-time": "769",
    "execution-stop-time": "1823",
    "execution-time": "1054",
    "instructions-used": "5139",
    "table-name": "yahoo.finance.analystestimate"
   },
   "user-time": "1824",
   "service-time": "1806",
   "build-version": "0.2.842"
  },
  "results": {
   "results": {
    "symbol": "YHOO"
   }
  }
 }
}
Run Code Online (Sandbox Code Playgroud)

这里结果显示为空..有什么变化?我怎么知道发生了什么?

我可以使用替代解决方案来获取此数据吗?

Har*_*rry 0

开发人员用来创建表的 JS 不再工作。这是部分格式化的。您可以看到他正在抓取页面,然后进行屏幕抓取。

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;
Run Code Online (Sandbox Code Playgroud)