2014年3月9日日曜日

PHP: XPath で HTML の特定要素を取得 2

PHP の DOMXPath クラスを使うと HTML から特定の要素を取得することができる。
例えば HTML が以下のようになっているとする。
<html>
    <head></head>
    <body>
        <div id="target">Target Element</div>
    </body>
</html>

この場合は PHP の DOMXPath クラスで以下のように指定できる。
// HTML ファイル読み込み
$html = file_get_contents('target.html');

// DOMDocument オブジェクトを作成
$document = new DOMDocument();
@$document->loadHTML($html);

// XPath オブジェクトを作成
$path = new DOMXPath($document);

// 特定要素を取得
$path->query('/html/body/div');
echo $path->item(0)->textContent;  // Target Element

/ でパスを開始するとルートノードから辿って検索される。
// で開始するとドキュメント全体から指定したタグ名の要素を全て取得できる。
$path->query('//div');

id や class など、属性を使用する場合には @ 記号を使用して指定する。
$path->query('//div[@id="target"]');

他にも条件に引っかかる要素の内、X番目に出現したものを取得するなど、
柔軟に条件を指定することができる。

XPath についてはこちらのページがとても分かりやすい。
http://msugai.fc2web.com/java/XML/XPath.html

0 件のコメント:

コメントを投稿