Greasy Fork is available in English.

i,o,pでXPath生成ツール

i:生成 o:除外条件付き生成 p:除外条件+1つの要素のみを生成 Shift+i:除外条件変更 Shift+o:要求条件入力 Shift+p:要求Hits数変更

Penulis
minarai
Pemasangan harian
0
Total pemasangan
28
Nilai
0 0 0
Versi
0.3.7
Dibuat
13 Februari 2019
Diperbarui
28 Agustus 2020
Lisensi
N/A
Berlaku untuk
Semua situs
■ 概要

マウスで指し示した要素を指すXPath式を雑に作るツールです

■ 使い方

1.XPath式を作りたい要素の上をマウスでホバーしながらi,o,pキーのどれかを押してください
 押すキーによって作るXPath式の傾向を指示できます;

 i…通常の結果を表示します(基本)
 o…設定した除外文字列(後述)を含まない作例のみを表示します
 p…設定した除外文字列を含まず、かつページ全体で1つ(変更可)の要素だけにヒットする作例のみを表示します

2.指した要素の外枠がしばらく赤い点線で表示されるので指したかった要素が指せているか確認してください
 ポップアップパネルが出てエディットエリアと作成したXPath式の作例がいくつか表示されます
 作例には強いランダム性があるのでキーを押すたびに違う候補が出ます
 何度も押して作例を読みながらDOM構造を把握しつつ、良い候補が出るまでキーを連打するのが基本的な使い方です

 Hits列に表示される数値はその作例でヒットする要素の数を表しています
 目的の要素の総個数が分かっている時はその数と同じものに当たりをつけると早いです

 Possibly列と文字色ではその作例のだいたいの性質が次のように分かります;

・last one(青)
 「(個数が不定の)列挙要素の最後の1つ」を指定したい時に有力候補です
 「同タグの兄要素があり、弟要素はないために、兄弟要素の順位指定に[last()]を使っている」ものがこれになります

・first one(緑)
 「(個数が不定の)列挙要素の最初の1つ」を指定したい時に有力候補です
 「同タグの弟要素があり、兄要素はないために、兄弟要素の順位指定に[1]を使っていて、Hits数が1で、text()を指定していない」ものがこれになります
 この表示を期待する時はuAutoPagerize等のページ継ぎ足しアドオンを使用していると気が付かないところで次ページが読み込まれていてHits数が1にならない(ため、この表示が出ない)ということが起こるので、継ぎ足し系アドオンは一時的にオフにした方が良いかもしれません

・id/class(赤紫)
 idかclass属性を使用しています。変更に強いXPath式を作るのにセオリーとして良い候補です

・href(赤)
 href属性を使用しています。あまり実用的でない場合が多いです

 作例の最後の3つだけは特別で、固定的な作り方をしています。これらはi,o,pの別の影響を受けません;
 1つめ…その要素だけの全ての属性を書いただけのもの(親ノードは遡らない)
 2つめ…その要素のフルパスを記述しただけのもの
 3つめ…全ての親ノードを遡り全ての属性を網羅したもの

3.作例上をマウスでホバーするとその式でヒットする要素が緑色に光るので確認してください

4.作例をクリックするとその式がエディットエリアにコピーされます(Ctrlキーを押しながらだと「"」を「\"」にエスケープしてコピーされます)

5.作例をダブルクリックするとその式をクリップボードにコピーして終了します。Escキーを押すと何もせず終了します

6.エディットエリアでXPath式を書き換えるとリアルタイムでHits数やPossiblyを表示し、ヒットする要素が緑色に光ります
 作例で出たものを元に人間が仕上げるのに使うようになっています
 「エリア内の文字列をクリップボードにコピーして終わる」等の機能は特にないので自分でCtrl+A、Ctrl+C、ESCと押すなどしてください

■ 除外条件と要求条件の指定方法

○ 除外条件指定 Shift+i
 Shift+iを押すとプロンプトが出るので作例に含まれてほしくない文字列を正規表現(+独自構文、後述)で入力するとそれ以降o,pキーでの作例が全てそれを含まないものになります
 デフォルトでは"@href=|text\\(\\)|@title=|@alt=|@src="が設定されています
 これは、総数が不定で列挙される項目や、実際の内容が固定されない同格の要素を指すXPathを探すように設定しています
 デフォルトを変えたければスクリプト冒頭の
 var excludeRE = "@href=|text\\(\\)|@title=|@alt=|@src=";
 の部分を変更してください

○ 要求条件指定 Shift+o
 Shift+oを押すとプロンプトが出るので作例に含んでほしい文字列を正規表現(+独自構文、後述)で入力するとそれ以降i,o,pキー全ての作例がそれを含むものになります
 デフォルトは空欄です
 初回のプロンプト入力時にはよく利用することになる @id=|@class がフォームの初期値として入ります

○ Hits数指定 Shift+p
 Shift+pを押すとプロンプトが出るので数値を入力すると、以降pキーでの作例はその数のヒット数が出るもののみになります
 デフォルトは1です

・shift+iとshift+oで使える独自構文

 キーワードには正規表現が使えるほか、OR検索は|で、AND検索はスペースで区切ることで(厳密に文字としてスペースを使いたい時は\sを使ってください)、NOT検索は行頭1文字目を!にすることでそこからスペースが出るまでがNOT指定になります(!は行頭1文字目の1回きりしか使えません)。|やスペースや!は全角でも構いません
 例えば「ABCやDEFを含まず、GHIかJKLを含み、かつMNOとPQRも含む」ものにヒットさせたければ「!ABC|DEF GHI|JKL MNO PQR」です
 1つの指定でNOT指定もできるようになったためshift+iとshift+oの両機能がある意味が分からなくなっています


■ おまけ AutoPagerize用MY_SITEINFO書き出し機能

 uAutoPagerizeのMY_SITEINFO(やweAutoPagerizeのユーザーSITEINFO)の雛形をそのままコピペして挿入できる書式で書き出させることができます。やり方は
1.nextLinkに指定したい要素(「次のページ」「>」などのリンク)のXPath式の作例を出させて使いたい式の行の右端の「->」をクリック
 この時は末尾がAタグでない場合はAタグに当たるまで最大10回まで/..を追加してAタグの親要素に遡るXPathがコピーされます。他の時にこの目的で使ってもかまいません
 Aタグに当たらなかった場合は表示通りのXPathがコピーされます
2.pageElementに指定したい要素(継ぎ足したいコンテンツ)のXPath式の作例を出させて使いたい式の行の右端の「[]」をクリック

 それぞれ良い候補と思われる->と[]は背景に赤い色がついています
 順番はどうでも良いので1と2の両方を決めるとアラートボックスで確認が出て、このボックスを閉じると雛形がクリップボードにコピーされます
 適宜手直しをしてuAutoPagerizeのMY_SITEINFOなどに挿入してください

 またスクリプト冒頭部分の設定で他のスクリプト用のSITEINFOを出力させることもできます
 const SITEINFO_UAP = 1; // -> [] で「AutoPagerize」用のSITEINFOを出力
 const SITEINFO_WCA = 0; // -> [] で「web漫画にショートカットキーを追加」用のSITEINFOの雛形を出力
 const SITEINFO_YHM = 0; // -> [] で「ヤフオクで非表示とメモ」用のSITEINFOの雛形を出力
 部分の0~1を変えると1にしたものが出力されます
 複数の項目を1にすることもできその場合はつなげて出力されるので必要な行だけ使ってください


不具合や要望があれば:(Bitmessage)BM-NBKhGgzahPds3f5Ms6ZRJyvZoMNgTYy4