Webスクレイピングを活用するにあたって、PHPでWebスクレイピングを実行しようとしたものの、具体的にどうすればいいか迷っている方もいらっしゃるでしょう。そこで今回は、PHPの概要やPHPを用いたWebスクレイピングの方法・手順、注意点などをご紹介します。
はじめに、Webスクレイピングの基礎を確認しておきましょう。
Webスクレイピングとは、Web上の特定の情報を自動的に抽出する技術を指します。スクレイピング(Scraping)という言葉は、「Scrape(こする・かき出す)」からきており、情報をこするようにかき出すといった意味合いがあります。
Webスクレイピングと似たものに「Webクローリング」がありますが、これはWebサイトを巡回し、情報を保存する技術です。クローリングはただ情報を網羅的に収集する意味合いに留まるのに対して、スクレイピングは、指定した特定の情報を「抽出する」意味合いを含みます。ただし、スクレイピングにおいてもクローリングの工程を含むため、Webスクレイピングは「Webクローリング+Webスクレイピング」を行う一連の活動を指します。
Webスクレイピングは、スクレイピングツール・サービスを利用して行うこともできますが、エンジニアなどが在籍している場合は、プログラミング言語を用いて実行することも可能です。よく利用される言語としてはPython、PHP、Ruby、JavaScriptなどが挙げられます。
PHPでWebスクレイピングを実行するために、まずはPHPの概要などの基本事項を確認しましょう。
PHPとは、動的にWebページを生成できるスクリプト言語です。仕様や文法が比較的容易で扱いやすいのが特徴です。また、MySQLなどのデータベースとの連携が容易でWebアプリケーションの開発によく使われています。
PHPには、Webスクレイピングを容易に実装できるライブラリも存在するため、Webスクレイピングに向いている言語の一つです。ライブラリとは、プログラムを書きやすくするために、使用頻度の高いコードを効率的に利用できるようにまとめたものです。
PHPでWebスクレイピングを行う際、大まかに次の流れで実施していきます。
スクレイピングしたい対象ページを特定し、URLを取得します。
ページ内にある情報のうち、どの情報を取得したいのか特定します。
対象ページに対して、PHPでプログラムを作成してリクエストを送信します。
3.で取得したHTMLを解析して、プログラミングによって必要な対象データを抽出します。
抽出した情報を取得し、整形・加工した上で保存します。
では、PHPを用いたWebスクレイピングを実行していきましょう。
PHPを実行するための環境を整えましょう。最低限必要となるものは次の通りです。
・テキストエディタ
・PHPの実行環境
・Webスクレイピングに活用できるライブラリ
Webスクレイピングのプログラミングが目的であれば、基本的にコードを記述するテキストエディタとPHPの実行環境があれば、事足ります。実行環境としてはFTPによってファイルをアップロード・ダウンロードするクライアントやサーバーが挙げられます。また、Webスクレイピングに活用できるライブラリ等も必要に応じて準備しましょう。
ライブラリは、主にcURLやGuzzleなどがWebスクレイピングに利用されています。
ここでは、cURLというライブラリを用いた方法をご紹介します。
1.WebページよりHTMLを取得
2.HTMLを解析・特定の情報を取得
3.データの抽出と保存
この1~3の工程をコードで記述すると次のようになります。
例えば、ページからタイトルだけを抽出するコードをご紹介します。
<?php
// cURLセッションの初期化
$ch = curl_init();
// データを抽出したいページのURLを指定
curl_setopt($ch, CURLOPT_URL, "https://XXX.com");
// 文字列で取得するように設定
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// URLの情報を取得する指示
$result = curl_exec($ch);
// cURLセッションの終了
curl_close($ch);
// 以下でタイトルを抽出
preg_match("/<tle>(.*?)<¥/tle>/i", $result, $matches);
$tle = $matches[1];
echo "ページのタイトル: " . $tle;
?>
preg_match() 関数を使用してタイトルを抽出しています。最後に、取得したタイトルを表示します。
このコードはあくまで一例であり、他にも多様な記述方法がありますので、最適な方法で記述してください。
PHPを利用してWebスクレイピングを実行する場合、以下のような点に注意しましょう。
Webスクレイピングを高頻度で実行すると、対象サイトのサーバーに負荷がかかり、サーバーダウンなどのトラブルにまで発展することがあります。業務妨害などに相当する恐れがあるため、アクセス頻度に注意するようにしましょう。
個人情報を本人の同意なく収集し、公開し、売買する行為は基本的に法律で禁止されています(違法にならないケースもあります)。スクレイピング対象を事前によく確認し、個人情報の取得は避けましょう。
関連記事:Webスクレイピングは違法になり得る?禁止事項と行うべきこととは?
Webスクレイピングを行う際は、著作権法を違反していないか注意しましょう。著作権法では、著作権を無視した利用、複製などを行うことが禁じられています。 ただし、「例外規定」も設けられており、この例外規定が適用される場合には許諾を得ずに著作物を利用できますが、目的外で著作物を使用することはできません。以下も合わせてご覧ください。
関連記事:Webスクレイピング・Webクローリングと著作権法について。注意点を解説
WebサイトやサービスによってはAPIを公開しており、情報を提供している場合もあります。目的によってはAPIの利用が適しているケースもあるため、Webスクレイピングと合わせてAPIも検討しましょう。
PHPでWebスクレイピングを実行する方法をご紹介しました。自社でノウハウやリソースが潤沢な場合は、手軽に実施することができるでしょう。
一方で、非エンジニアで対応するしかなく、その対応工数も確保できないといった技術面・リソース面ともに困難である場合は、Webスクレイピングサービスを利用する方法もおすすめです。
Webスクレイピングサービス「ShtockData」は、Webサイトを周期的にクローリングし、Webページ上のデータを抽出・収集するサービスです。サーバーなどの設備をご用意いただく必要がなく、利用者は格納されたデータを取得するだけ。大量の情報収集はもちろん、データの見える化・分析まで一連のソリューションを提供します。詳細は以下よりご覧ください。
市場シェアNo.1 WebスクレイピングサービスならShtockData
Webスクレイピング&Webクローリングをすぐに誰でもできるツール型のShtockDataについて1冊にまとめました。特徴や費用感、導入後の運用イメージなどを集約しています。
ぜひお気軽にダウンロードしてみてください。
Webスクレイピング&Webクローリングをすべてお任せできる代行サービス型のShtockData Proについて1冊にまとめました。特徴や選ばれる理由、事例などを集約しています。
ぜひお気軽にダウンロードしてみてください。