クローリングで使うXPathのサンプル

XPathというのはXPathを扱うための言語構文です。SQLや正規表現のように、PHPをはじめ多くの言語で使うことができる、すばらしく便利な言語です。これを使えば、単にHTML内の特定の文字列を取り出すだけでなく、文字列関数を使った加工まで出来てしまいます。

クローリングするのにわりと使うであろうXPathをいくつか書いてみます。

PHPでXPathを扱うにはPHPコアに含まれるDOMXPathクラスを使う方法、SimpleXMLを使う方法があります。PHPのXPathは1.0の対応です。2.0にはまだ対応していないようです。

HTMLをXMLとして読み込んで使うやり方

いろいろ試してみて、安定した方法が分かってきました。最近はDOMXPathをよく使っています。文字化け対策でutf8のHTMLをHTML-ENTITIESにすると良いようです。

「次へ」もしくは「Next」と書かれたリンクのURLを取得する

 2番目以降のliを取り出す

 取り出した値を好きなPHPの関数で処理する

最初に名前空間に登録して使います。

クラスを使う場合は、staticで静的関数にしないと使えません。

のように使えます。

テーブルの行の中でTHヘッダをみて好きな行のTDを取得する

リンクURLの中に「*- 」が含まれていた場合は後半のみ取得、含まれていない場合はそのまま取得する

他のサンプル

AutoPagerize WikiのXPath Cookbook

MicrosoftDeveloperNetwork XPathの例

wikipediaのXPathのページ(サンプルではないけど分かりやすいので最初に読むといい)