PHPでスクレイピング

電脳備忘録
WEBスクレイピングという技術を使うとWEBページの必要な情報のみ抽出することが出来るようです。 そもそも"スクレイピング"という単語を知らなかったのでいろいろと調べてみました。 これまでやろうとして出来なかったネタが、この技術を使うことで実現できそうです。自分のスキルの底上げを図るという意味でもいい課題かもしれませんね。

おおむね下記のような仕組みを実装したいと考えています。

登録したサイトに問い合わせて必要な情報だけ抽出してデータベースに格納し、格納したデータを使ってページを生成する

PHPでスクレイピングを実行するライブラリはいくつかあるようですが、今回は「PHP Simple HTML DOM Parser」というライブラリを使ってみました。

お約束

毎度のことですが、参照は自己責任でお願いいたします。

ダウンロード

PHP Simple HTML DOM Parserの「Download & Documents」にある「Download latest version form Sourceforge.」のリンクをクリックするとダウンロードできます。
2011.11.07現在

セットアップ

ダウンロードしたファイルを解凍後、任意の場所にフォルダをおきます。

コードを書いてみる

ためしにこのブログのindex.php内の画像リンクとURLリンクを取得させて見ました。 simple_html_dom.phpをインクルードしたら、あとはルールに従って書けばよいみたいです。簡単ですね。

<?php
include './simplehtmldom/simple_html_dom.php';
// URLを指定してインスタンスをつくる
<br /> $html = file_get_html('http://www.560days.com/');
// 全部の画像を取得して表示
foreach($html->find('img') as $element) echo $element->src . '<br>';
// 全部のURLを取得して表示
foreach($html->find('a') as $element) echo $element->href . '<br>';
?>

実行結果

実行結果を確認すると取得できていました。これすごく便利です。細かい指定方法についてはこのあたりのエントリーが参考になると思います。

PHPでHTMLをパーサーにかけてスクレイピング
htmlSQLよりアツい!?jQueryみたいにセレクタでHTMLをparse(解析)する「PHP Simple HTML DOM Parser」

これは便利

ドキュメントが英語なのがアレですががんばって読み解きたいと思います。こんな便利なライブラリを書いてくださった開発者の方に感謝です。次は取得したデータをデータベースに格納する仕組みを考えたいと思います。

広告

ブログの維持費に充てるでございます・・・。