PHPでWebスクレイピングをやってみた


前から興味があったけどやったことがなかったPHPでのWebスクレイピング。調べてみると、『PHP Simple HTML DOM Parser』というのがいいらしい(参考:PHP Simple HTML DOM Parserの使用方法 – Webスクレイピング ライブラリ)。
PHP Simple HTML DOM Parser – Browse Files at SourceForge.net

というわけで使ってみることに。まずは上記ページからsimple_html_dom.phpをダウンロードして作成するPHPと同じフォルダに置く。今回のウェブスクレイピングの対象ページははてなブックマークのタグ検索ページ。はてブのタグ検索結果ページのそれぞれのエントリーはsearch-resultというクラスのliタグ内に記述しているようなので、search-resultクラスの要素を取得してforeachでループしたらよさそう。

やってみたら思った以上に簡単にできたので、ちょっといろいろ機能つけくわえてみた。以下、body部分のみ抜粋。

サンプルページ:スクレイピングテスト

内容としては、タグと除外URLを入力してブックマーク数を指定して送信ボタンを押すとはてなブックマークのタグ検索の結果(最高200件まで)を出力するというもの。除外URLを入力すると、表示させないエントリーを指定できる。

例えば、タグに『ニコニコ動画』、除外URLに『http://www.nicovideo.jp/』と入れると、結果はURLに『http://www.nicovideo.jp/』がURLに入ってないエントリーだけが表示される(前方一致ではなく、URLのどこかに含まれていたら除外する)。
http://amyu.minibird.jp/scraping/scraping_test.php?tag=ニコニコ動画&cut=http%3A%2F%2Fwww.nicovideo.jp%2F&users=3

とりあえず、5ページぐらいなら怒られないだろうと思って最初5ページのみを見るようにした。他に影響がでるもんでもないと思うので、XSSとか考えずにコーディングしてます(それ以前にもっとキレイなコードを書くようにしろと怒られそうですが・・・)。

本当、思った以上に簡単にできたので時間があれば何かウェブサービスっぽいものを作ってみたい。

コメントを残す

メールアドレスが公開されることはありません。