__dopostback()を処理するためのGreasemonkeyスクリプトの書き方
-
28-09-2019 - |
質問
私は科学的な計算のバックグラウンドから来ており、人気のある非人気(アドホック)プログラミング言語でいくつかの歴史がありますが、クライアントサイドプログラミングと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ハッカーからのアマチュアの質問をお詫びします。
解決
うまくいけば、この例があなたの道を啓発します:
// ==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"));
}
});