この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 75|答える: 0

XPathを使ってXMLやHTMLドキュメントの内容を取得する

[リンクをコピー]
掲載地3日前 | | | |
XPathは、HTMLやXMLなどの木構造データから必要な情報を正確かつ効率的に指定し抽出する技術です。

XPath概要

XPathは、XMLまたはHTMLドキュメントツリー内の特定の要素や属性を指定し抽出するための言語です。 ウェブページはしばしばHTMLで構成されているため、XPathはウェブスクレイピング、データ検索、XMLデータ検索など様々なシナリオで広く使われています。

一般的な使い方は以下の通りです:

  • ウェブクローラーにおけるデータ抽出:XPathは、eコマースウェブサイトの製品情報やニュースサイトの記事タイトルなど、特定のデータを自動取得するために使われます。
  • XMLデータ検索と処理:ビジネスシステムやデータリンク処理では、データはしばしばXML形式で交換されます。 XPathを使えば、大量のXMLデータから必要な情報を効率的に抽出できます。
  • API応答の解析(XML形式):SOAPなどのXMLベースのAPIを使用する場合、XPathは応答データを解析するために使われます。 これにより、特定のステータスコードや結果データを迅速に取得でき、システム統合や自動処理の精度が向上します。

ツールの推奨

XPathの学習と使用過程で、よく使われるツールには以下が含まれます:

Chrome Developer Tools:Chrome ブラウザに付属する強力なツールで、F12キーを押すことで呼び出せます。 「要素」パネルでは、ウェブページ上のHTML要素をホバーしてクリックすることで素早く見つけることができ、要素を右クリックするとXPath式を直接コピーできるため、簡単に検証やテストが可能です。 例えば、ECの商品ページを分析する際には、Chromeの開発ツールを使って商品名や価格、その他の要素のXPathを素早く取得できます。
Firefox Developer Tools:Chrome開発者ツールと同様にブラウザに付属しています。 また、ページ内の要素を簡単に見つけたり、XPath式の表示やテストも可能です。 これはFirefoxブラウザに慣れている開発者にとって良い選択肢です。
オンラインXPathテストツール:「XPath Tester」などのオンラインツールはインストールなしで使用でき、ウェブページを開くことで使用できます。 XMLやHTMLドキュメントの内容を貼り付け、XPath式を入力すると、リアルタイムでマッチ結果を確認できます。 このツールは特に初心者が早く始めて簡単なXPathのエクササイズを行うのに適しています。
XPath Helper Plugin:Chrome Browserを例にすると、プラグインをインストールすると、ウェブ閲覧時にブラウザインターフェースに浮かぶウィンドウが追加され、現在のマウスオーバー要素のXPathパスが表示されます。また、XPath式を直接ウィンドウ内で編集・テストできるため、開発効率が大幅に向上します。

XPath 抽象構文

ノードを選択する

XPathはXMLドキュメント内のノードを選択するためにパス式を使用します。 ノードはパスやステップをたどることで選択されます。 最も有用な経路式は以下に挙げられます。
表現
形容
ノード名このノードのすべての子ノードを選択します。
/ルートノードから選択します(子ノードを取る)。
//マッチング選択の現在のノードから、その位置に関係なく文書内のノードを選択します(子孫ノードを取る)。
.現在のノードを選びます。
..現在のノードの親ノードを選択します。
@属性を選びましょう。

以下の表には、いくつかの経路式とその結果を挙げています。
経路表現
結果
本屋書店名のあるすべてのノードを選びます。
/bookstore
ルート要素の書店を選びましょう。
注意:パスがスラッシュ( /)で始まる場合、このパスは常に要素への絶対パスを表します!
書店/書籍書店の子供向け要素をすべて選びます。
//book文書内の位置に関係なく、すべての本のサブ要素を選択します。
書店//書籍書店のどこにあっても、書店要素の子孫であるすべての書籍要素を選択します。
@langlangと名付けられたすべてのプロパティを選択してください。

述語

述語は特定のノードや指定された値を含むノードを見つけるために使われます。
述語は角括弧内に埋め込まれています。
以下の表では、述語を持つ経路式とその結果を列挙します。
経路表現
結果
/bookstore/book[1]書店の子要素に含まれる最初の本の要素を選びましょう。
/bookstore/book[last()]書店のサブ要素に含まれる最後の本の要素を選びます。
/bookstore/book[last()-1]書店の子供の要素に属する、最後から2番目の本の要素を選ぶ。
/bookstore/book[position()<3]書店要素の子要素である最初の2つのブック要素を選びます。
タイトル[@lang]langというプロパティを持つすべてのタイトル要素を選択します。
タイトル[@lang='eng']eng値を持つlang属性を持つすべてのタイトル要素を選択します。
/bookstore/book[price>35.00]書店要素の全ての書籍要素を選び、価格要素の価値は35.00以上でなければなりません。
/bookstore/book[price>35.00]//title書店要素の書籍要素のすべてのタイトル要素を選び、価格要素の価値は35.00以上でなければなりません。

未知ノードを選択する

XPathのワイルドカードは未知のXML要素を取得するために使用できます。
ワイルドカード
形容
*任意の要素ノードにマッチします。
@*任意の属性ノードにマッチします。
node()どのタイプのノードでもマッチします。

以下の表では、いくつかのパス式とそれらの式の結果を列挙します。
経路表現
結果
/bookstore/*書店の要素の子要素をすべて選びます。
//*ドキュメント内のすべての要素を選択します。
タイトル[@*]すべてのタイトル要素を属性で選びます。

いくつかの経路を選びましょう

経路式に「|」を用いることで オペレーターの皆さん、いくつかのルートを選択できます。

以下の表では、いくつかのパス式とそれらの式の結果を列挙します。
経路表現
結果
//book/title | //book/price書籍の要素のすべてのタイトルと価格要素を選びます。
タイトル | 価格文書内のすべてのタイトルおよび価格要素を選択してください。
/bookstore/book/title | //price書店要素に属する書籍要素のタイトル要素と、文書内の価格要素をすべて選びます。

XPath関数

以下は、XPathのコア関数およびXSLTによるXPath特有の追加要素のコメント付きリストであり、説明、構文、パラメータリスト、結果タイプ、対応するW3C推奨事項のソースを含みます。

  • ブーリアン()
  • 天井()
  • choose()
  • concat()
  • 含まれている()
  • カウント()
  • current() XSLT専用
  • document() XSLT専用
  • element-available()
  • false()
  • フロア()
  • format-number() XSLT専用
  • 関数-利用可能()
  • generate-id() XSLT特有
  • id()
  • key() XSLT固有の
  • lang()
  • last()
  • local-name()
  • 名前()
  • namespace-uri()
  • 正規化空間()
  • not()
  • 番号()
  • ポジション()
  • ラウンド()
  • starts-with()
  • string()
  • string-length()
  • サブストリング()
  • 部分文字列後()
  • 部分文字列前()
  • sum()
  • system-property() XSLT固有の
  • translate()
  • true()
  • unparsed-entity-url() XSLT specific

実技試験

Chromeを開き、以下のコマンドでAタブリンクのテキスト内容を取得します:
以下に示すように:



参考:ハイパーリンクのログインが見えます。




先の:[劇作家] (3) エラー例外を検出するための自動テスト
次に:.NET/C#はAzure Translatorのテキスト翻訳インターフェースサービスを呼びます
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com