【PHP】HTMLパーサー等のライブラリを使わずに正規表現でスクレイピング

php PHP
この記事は約2分で読めます。

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ページにアクセスすると、公開しているサーバーの負荷になったり、攻撃していると間違えられることがあるので、自己責任かつ節度を持ちましょう。

この記事を書いた人
サイト運営者
RYU
RYU

静岡の情シス顧問|情シス出身→大手システム会社→独立|
企業のITコスト・契約・情シス体制を整理|
システム会社の見積確認、社内対応と外部依頼の整理|
Salesforce上流・見積評価にも対応|
現場に寄り添い、ITで会社を強くする。

RYUをフォローする
PHP
スポンサーリンク