本文へスキップ

XPathテスター

XPath Tester

XMLやHTMLにXPathかCSSセレクタを当てて、一致したノードをすべて並べます。

XPath 1.0の式かCSSのセレクタを、XMLやHTMLの文書に対して実行し、一致したノードをすべて、それぞれの絶対パスとともに表示します。評価はブラウザ自身が行うので、ここで見える結果が、コードの中で`document.evaluate`が出す結果です。

🔒 ブラウザの中だけで動きますxpathxmlselectortest

XPath 1.0 の式

クエリ言語

文書

読み方

ファイルを置く

このタブの中だけで読みます。

結果

入力するそばから、ここに結果が出ます。

どう動いているか

  • · 評価はブラウザー自身の document.evaluate(XPath 1.0)と querySelectorAllです。結果の型づけ — ノード集合・数値・文字列・真偽値 — と、各ノードの絶対パス、名前空間接頭辞の扱いはこのツールがやっています。
  • · XML モードは厳密に読んでどこがおかしいかを伝え、HTML モードはブラウザーと同じようにおおらかに読みます。HTML はタグ名を小文字に正規化するので、 //DIV ではなく //div が正しくなります。
  • · 既定の名前空間(xmlns="…")が宣言された文書では、接頭辞のない名前は何にも一致しません。XPath 1.0 の規則です。そういうときは _ 接頭辞を使って //_:itemのように書きます。
  • · XPath 2.0 や 3.x の関数(matches, ends-with, lower-case)はどのブラウザーにもありません。 contains·starts-with·translate·normalize-space が 1.0 で使えるものです。
  • · 文書はこのタブの中だけで読み、どこにもアップロードしません。

JSON なら JSONPath テスター か jq プレイグラウンドが適した道具です。

使い方

  1. 文書の読み方を選びます

    XMLのモードは厳密に読み、どこが壊れているのかを知らせます。HTMLのモードはブラウザと同じように寛容に読み、タグの名前を小文字に揃えます。

  2. 式を書きます

    XPathかCSSのセレクタかを、切り替えで選びます。例のボタンが、属性、述語、名前空間、コメントのノード、そして値を1つ返す関数までを押さえています。

  3. 結果の種類をまず見ます

    XPathが返すものは4種類あり、ノードの集合はそのうち1つだけです。`count()`、`string()`、`boolean()`は値を1つ返すので、空の一致の一覧ではなく、その値そのものとして表示します。

よくある質問

文書は問題ないのに、式が何も見つけません

ほぼ確実に既定の名前空間のせいです。ルートに`xmlns="…"`が付いていると、XPath 1.0では接頭辞の無い名前は何にも一致しません。接頭辞を結びつける必要があります。ここではその接頭辞が`_`なので、`//item`は`//_:item`と書きます。

`matches()`が無いのはなぜですか

ブラウザがXPath 1.0しか実装していないからです。`matches`、`ends-with`、`lower-case`などは2.0で入ったもので、どのブラウザにもありません。1.0で使える道具は`contains`、`starts-with`、`translate`、`normalize-space`です。

XPathとCSSのどちらを使うべきですか

CSSのほうが短く、たいていのスクレイピングにはそれで足ります。XPathは上へ遡れますし(`..`、`ancestor::`)、テキストの内容で一致させられますし、数値や文字列を返せます。セレクタにはできないことばかりです。このページは両方を動かすので、同じ文書の上で見比べられます。

ページを代わりに取ってきてくれますか

取ってきません。文書を貼り付けるかドロップすれば、このタブの中で読みます。取りに行くにはプロキシが必要になりますが——ブラウザはページに別のオリジンを読ませません——そのプロキシは、あなたが試したものをすべて見ることになります。

ここから渡せます

次の一手

このツールが出したものをそのまま受け取れる道具です。