トップページ > コンテンツ > プログラミング入門 > Ajax入門 > PHP入門 > HTMLサイトをクロールして解析する > Tidy関数

http://www.usamimi.info/~ryouchi/scraping/05.htmlのサイトが非常に分かりやすいのだが、自分なりに解釈して書いておいた方が
毎回全部読まずに済むのでまとめてみた→それこそスクレイピングして必要なデータだけ取ってこいって?

Tidy関数では得たhtml情報に対して、スクレイピングの記述を行うことができる。
まず、tidy関数で扱えるようにパースする設定をtidy_parse_string()関数を使って行う。
$config = array('indent' => TRUE, 
               'output-xhtml' => TRUE, 
               'wrap' => 200);
と設定しておき、tidyオブジェクト用変数 = tidy_parse_string(文字のデータ用変数, $config, 'UTF8');のような
形でパースを行う。$configのオプションはhttp://tidy.sourceforge.net/docs/quickref.htmlを見れば分かる。
tidy_clean_repair(tidyオブジェクト用変数);
とすることで、マークアップに設定に基く誤りの修正を行うことができる。
tidyオブジェクトを作成したら、いよいよスクレイピングのための処理を記述することになる。

tidyNode型の$nodeといったような変数を宣言したら、
$node->idを比較していくことで、タグの部分を取得できたりする。ちなみにtidyタグ定数は非常に多い。
詳しくはこの辺(http://php.plus-server.net/tidy.constants.html)をチェック!
if($node->id == TIDY_TAG_A):tidyオブジェクトのタグがAである場合という意味
if($node->attribute['alt']):tidyオブジェクトのタグの属性のうち、altのもの。属性の種類はimgとかsrcとか色々あるがHTMLタグの話になるのでここでは説明を割愛する。

ノードを辿るには、$node->hasChildrenといった感じで子の要素を探すことができる。
子の要素の指定に関しては$node->children[0]->valueといった指定方法ができるらしい。
最終更新:2011年04月03日 11:49