PHP クローラー: XPath を使用して XML ドキュメントを解析する方法

王林
リリース: 2023-06-13 15:18:02
オリジナル
1348 人が閲覧しました

インターネット時代において、データは非常に重要な資産です。インターネットからデータを取得する方法はクローラーです。クローラーとは、実際のユーザーが Web サイトにアクセスすることをシミュレートし、プログラムを通じて Web ページ上のデータを自動的にクロールすることを指します。 PHP クローラーは非常に重要で、さまざまな Web サイトからデータをクロールし、データ分析、処理、マイニングを通じて豊富な情報とリソースを提供します。 PHP クローラーでは、XPath を使用して XML ドキュメントを解析することは非常に重要なテクノロジーです。この記事では、XPath とは何か、XPath の構文、XPath が PHP クローラーにどのように適用されるかについて詳しく紹介します。

1. XPath とは

XPath は、XML ドキュメント形式の情報を検索するために使用される言語です。 XPath では、パス式を使用して、XML ドキュメント内のノードまたはノードのグループを選択できます。 XPath は XML Path Language の略で、XML パス言語であり、XML 文書内の特定の要素を見つけ、パス式を使用して文書の構造を把握することで、文書内の特定のデータを見つけます。

2. XPath 構文

XPath の基本構文には、パス式、ノード、述語 (Predicate) が含まれており、これらについては以下で詳しく説明します。

  1. パス式

パス式は XPath の中心的な構文であり、スラッシュ記号 "/" または二重スラッシュ記号 "//" で始まります。ドキュメント内でアクセスするノードまたはノードのグループを見つけるために使用される文字。たとえば、次のパス式は、ドキュメント内のすべてのトップレベルの book 要素を選択します。

/bookstore/book

  1. ノード

XPath では、ノードは要素、属性、テキスト、名前空間、処理命令などとして定義できます。 。パス式ではスラッシュ記号を使用して、XML ドキュメント内のノードを下に移動できます。たとえば、「/」はルート ノードを表し、「bookstore」は XML ドキュメントのルート ノードの下の第 1 レベルのノードを表し、「book」は次のレベルにある book という名前のすべてのノードを表します。

  1. 述語

XPath の述語は、条件を満たすノードをフィルターで除外できる条件文です。述語の式は角括弧「[]」で表されます。たとえば、次の例の述語は [@category='WEB'] で、カテゴリ属性値が 'WEB' である書籍ノードを選択することを意味します。

/bookstore/book[@category='WEB']

3. XPath を PHP クローラーに適用する方法

PHP クローラーでは、DOMDocument クラスとDOMXPath 入力 XML ドキュメントを処理するクラス。このうち、DOMDocument クラスは XML ドキュメントの解析に使用され、DOMXPath クラスは XPath 式に基づいて DOMDocument オブジェクトからノードを選択するための API (アプリケーション プログラミング インターフェイス) です。

PHP ファイルに次のコードを追加して、XPath 解析 XML ドキュメントを実装します。

$url = 'http://example.com/data.xml'; // XML 文档路径
$xml = file_get_contents ($url); //读取 XML 文件
$doc = new DOMDocument(); 
$doc->loadXML($xml); //载入 XML 文件
 
$xpath = new DOMXPath($doc); 
$query = "//bookstore/book[@category='WEB']"; //XPath 表达式
 
$books = $xpath->query($query);
 
foreach ($books as $book){ 
    echo $book->getAttribute("title") . "
"; //打印符合条件的 book 节点 title 属性
}
ログイン後にコピー

上記のコードの機能:

  1. XML ファイルを読み取り、ロードします。 。
  2. DOMXPath クラスを使用して XPath 式を呼び出します。
  3. Query() メソッドを使用して、ノード オブジェクトのリストを返します。このリストには、条件を満たすすべてのブック ノードが含まれます。
  4. foreach ループを使用して、条件を満たすブック ノードの title 属性を出力します。

上記のコードでは、「//bookstore/book[@category='WEB']」は、category 属性の値が「WEB」に等しい、book という名前のすべてのノードを選択することを意味します。 。

4. 概要

XPath 構文のシンプルさと柔軟性により、PHP クローラーは非常に便利になります。 XPath 構文と PHP クローラーの組み合わせにより、インターネット データの取得の問題が解決されます。 XPath を使用して XML ドキュメントを解析する場合、より正確な情報を取得するには、実際のニーズに基づいて正しい構文を選択する必要があることに注意してください。

以上がPHP クローラー: XPath を使用して XML ドキュメントを解析する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート