我试图使用yql作为雅虎的财务数据。我检查了YQL控制台上的,以查看Yahoo标记下的数据库。我可以看到它下面的表格,但我在这里没有得到结果,具体如下:
从yahoo.finance.analystestimate中选择*,其中符号为(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"
}
}
}
}这里的结果显示为空。有什么改变吗?我怎么知道发生了什么?
是否有其他解决方案可用于获取这些数据?
发布于 2016-04-21 20:29:05
开发人员用来创建表的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;https://stackoverflow.com/questions/36260484
复制相似问题