0

私は科学計算のバックグラウンドを持っており、いくつかの人気のあるプログラミング言語とそうでない (アドホック) プログラミング言語の歴史がありますが、クライアント側のプログラミングと 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 ハッカーからの素人の質問で申し訳ありません。

4

1 に答える 1

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"));
    }
});
于 2010-11-02T17:27:39.543 に答える