5月 20, 2013

PHPでスクレイピング

注釈:この記事はQiitaにわたしが投稿していた記事を、自分のブログへ移動させたものです。
PHPでスクレイピングの記事が投稿されていたので、自分のやり方をメモ。

$body = file_get_contents( $url );
//$body = mb_convert_encoding($body, 'UTF-8', 'sjis-win'); // 文字コードが違えば

// HTMLが間違っている場合があるので、tidyを通して綺麗にする。
$tidy_obj = new tidy;
$tidy_obj->parseString( $body, array(), 'utf8');
$tidy_obj->cleanRepair();
$body = $tidy_obj->html();
unset( $tidy_obj );

// 分解
$dom = new DOMDocument;
$dom->encoding = 'UTF-8';
$dom->preserveWhiteSpace = false;
$dom->loadHTML( $body );
$xpath = new DOMXPath( $dom );
unset( $dom );

$nodes = $xpath->evaluate( "//div[@class='category']/div/p/a" );

という感じ。
HTMLが間違っていると、DOMDocumentが正しく認識できないときがあるので、tidyを通して綺麗にするのがポイント。
あとはxpathで、取りたいオブジェクトを引っ張ってこられる。

0 件のコメント:

コメントを投稿