HTMLパーサーを使えば簡単だけど、そんなライブラリを使うことすら面倒と思います。
正規表現を使ってゴリゴリとHTMLから値をとってスクレイピングする書き方をまとめました。
PHPでの正規表現を使う関数
正規表現を使うときは「preg_match」か「preg_match_all」を使います。戻り値がboolなのでif文で使うことが多いです。
preg_match($pattern, $html, $result);
preg_match_all($pattern, $html, $result);
コピペもできる正規表現パターン
使える正規表現のパターンを並べてみます。
//aタグのhrefの値を取りたいとき
$pattern = '@<a href="([^"]*)"@';
//mainクラスのaタグのhrefの値を取りたいとき
$pattern = '@<a class="main" href="([^"]*)"@';
//altが"プログラミング"のimgタグのsrcの値をとりたいとき
$pattern = '@<img alt="プログラミング" src="([^"]*)"@';
//imgタグのsrcの値をとりたいとき(imgタグのすぐ後にsrcがない場合)
$pattern = '@<img(?:.*?) src="([^"]*)"@';
//タイトルを取りたいとき
$pattern = '@<title>(.*)</title>@';
値のとり方
値のとり方はこのように取れます。
if(preg_match_all('@<a class="hoge" href="([^"]*)"@', $content, $result)){
echo $result[1][0];
}
スクレイピングのやり過ぎには注意
スクレイピングは上手く使えば、作業効率が上がります。
しかし、スクレイピングするために大量にWebページにアクセスすると、公開しているサーバーの負荷になったり、攻撃していると間違えられることがあるので、自己責任かつ節度を持ちましょう。