#PHPでwebスクレイピングを試してみた。
phpQueryというライブラリを使うとjQueryのように要素を指定して簡単にスクレイピングできるみたいなので、サンプルを試してみました。
jQueryのようにセレクタを指定する事ができるので、すごく直観的にスクレイピングしたい要素が取得できます。
※スクレイピングについては自己責任で行ってください。
##WEBスクレイピングとは
ウェブスクレイピングとは、ウェブサイトから情報を抽出するコンピュータソフトウェア技術のこと。ウェブ・クローラーあるいはウェブ・スパイダーとも呼ばれる。
出典:Wikipedia
##phpQueryのダウンロード
phpQueryのダウンロードページから最新バージョンをダウンロードします。phpQuery-onefile.phpというファイルがダウンロードされるのでそれを読み込ませます。
##実装サンプル
<?php
require_once("./phpQuery-onefile.php");
$html = file_get_contents("https://ja.wikipedia.org/wiki/%E3%82%A6%E3%82%A7%E3%83%96%E3%82%B9%E3%82%AF%E3%83%AC%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0");
//HTMLを全文取得
$dom = phpQuery::newDocument($html);
/*
* Wikipediaのタイトル・H1タグの中身と、
* 画像の一覧を取得している。
*/
//H1タグの取得
$h1 = $dom->find("h1")->text();
echo $h1 . '<br>';
//titleタグの取得
$title = $dom->find("title")->text();
echo $title . '<br>';
//imgタグの一覧を取得
foreach ($dom->find('img') as $img){
$img = $img->getAttribute('src');
echo '<img src=' . $img . '><br>';
}
//aタグの一覧を取得
foreach ($dom->find('a') as $a){
$a = $a->getAttribute('href');
echo '<a href=' . $a . '>' . $a . '</a><br>';
}
##スクレイピングする際の注意点
スクレイピングで検索すると検索候補に**「違法」とか「著作権」などの単語が出てきます。
スクレイピング自体には違法性はないですが、収集した情報の使い方を誤ると、著作権法違反となってしまう可能性がるので注意が必要です。
また、実際スクレイピングにより対象のサイトに負荷をかけて偽計業務妨害容疑**で逮捕された例もあるようです。スクレイピングは使い方を誤ってしまうと意図せず自分が加害者になってしまう可能性があるので使用には注意が必要です。
参考:岡崎市立中央図書館事件
##まとめ
ちょっとしたスクレイピングのプログラムであればこのライブラリを使用することで簡単に実装する事ができそうでした。
スクレイピングした結果をCSVに出力するようにしたらもっと便利になりそうです。