我来自科学计算背景,并且有一些流行和非流行(ad hoc)编程语言的历史,但我完全不同于客户端编程和JavaScript。
我之前为我的Greasemonkey设置编写了一些简单的JavaScript,但仅此而已。
我的问题是:http://www.ise.org/sirketler/sirketler.aspx
我正在尝试从上面的URL(土耳其伊斯坦布尔证券交易所网站)中的表格中获取有关证券和公司的所有数据。
该数据在根据公司名称开始的字母分类的网格表中给出,并且每个网格最多可以给出10行。同样在页面的右下角,会显示此信息的传播页数。
例如,您可以从Firebug控制台调用:
__doPostBack('ctl00$cphContent$ctl00$lbtnT','')
让公司以'T'开头,您可以通过发出以下内容浏览这些表的标签:
__doPostBack('ctl00$cphContent$ctl00$radGridSirketler$ctl00$ctl03$ctl01$ctl05','')
__doPostBack('ctl00$cphContent$ctl00$radGridSirketler$ctl00$ctl03$ctl01$ctl07','')
__doPostBack('ctl00$cphContent$ctl00$radGridSirketler$ctl00$ctl03$ctl01$ctl09','')
等。分别为本表的第1页,第2页和第3页。
我试图通过为给定的字母和数字数组发出__doPostBack()
方法来序列化它,方法是将它们连接到上面的固定字符串,但它没有成功。
那么我如何使用__doPostBack()
方法并附加所有这些结果子表并获取整体数据?
是否有资源可供阅读此类任务?
我为所有JS黑客的业余问题道歉。
答案 0 :(得分:1)
希望这个例子能够启发你的道路:
// ==UserScript==
// @name Examples : sirketler
// @namespace http://gm.wesley.eti.br/examples
// @description Simulation of an aspx PostBack request
// @include http://www.ise.org/sirketler/sirketler.aspx
// @require http://userscripts.org/scripts/source/63808.user.js
// @require http://userscripts.org/scripts/source/89515.user.js
// ==/UserScript==
AspxPostBackRequest({
"url" : "http://www.ise.org/sirketler/sirketler.aspx",
"manager" : "ctl00$ScriptManager1",
"eventTarget" : "ctl00$cphContent$ctl00$lbtnT",
"callback" : function(xhr)
{
var content = document.createElement("div");
content.innerHTML = xhr.responseText.split("|")[3];
alert(xpath("./div/table/tbody/tr", content).map(function(row)
{
return [].slice.call(row.cells).map(function(col)
{
return col.textContent.replace(/^\s+|\s+$/gm, "");
});
}).join("\n"));
}
});