-2

あるウェブサイトの情報を別のウェブサイトに表示するGreasemonkeyユーザースクリプトを作成しようとしています。match()正規表現でこれを実行しようとしましたが、構文に固執しました。

ページの内容は次のようなものです。

<html><body>
<h1 class="pos-title">Fritz Paul</h1>
<div class="columns">
    <div class="pos-column1">
        <ul id="attributes">
             ... ...
        </ul>
    </div>
    <div class="pos-column2">
        <ul class="attributes">
             ... ...
        </ul>
    </div>
</div>
</body></html>

そして私は:だけを取得したい:

<div class="columns">
    <div class="pos-column1">
        <ul id="attributes">
             ... ...
        </ul>
    </div>
    <div class="pos-column2">
        <ul class="attributes">
             ... ...
        </ul>
    </div>    
</div>


私は次のようなコードを試しました:

attibutes = responseDetails.responseText.match(xxxx);
playerNotesContent.innerHTML = attibutes;

このサイトで見つけた多くの例を試しました.match(...)が、うまくいきません。

4

1 に答える 1

1

他の人が言っているように、正規表現でHTMLを解析しようとしないでください。代わりにDOM解析を使用してください。

質問は明確ではありませんが、AJAXを介してページをフェッチし、それを解析しようとしているようですよね?<div class="columns">また、テキストの各ビットまたは特定のビット内にすべてのマークアップが本当に必要ですか?

これがGreasemonkeyの一般的なアプローチです。jQueryを使用して、DOMの解析を容易にします。OPのコメントと投稿されたスクリプトに基づいて
更新されました。:

// ==UserScript==
// @name        _Parse Ajax Response for specific nodes
// @namespace   http://www.test.com
// @include     http://www.test.com/player/*/details.php
// @require     http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// ==/UserScript==

var player_id = document.location.pathname.match(RegExp('player/([^/]+)/details.php$'))[1];
if (!player_id) { return; }

GM_xmlhttpRequest ( {
    method: 'GET',
    url:    'http://www.test2.com/players/item/' + player_id,
    onload: function (responseDetails) {
                var respDoc     = $(responseDetails.responseText);
                var targNodes   = $("div.columns", respDoc);

                $("#playerContent").after ('<div id="player_stats_block"></div>');

                $("#player_stats_block").append (targNodes);
            }
} );
于 2012-05-01T20:24:50.947 に答える