目次
phpQueryによるWEBスクレイピング方法とは?
世の中の技術発展のなかで、大量のデータを扱うことで作業の効率化や、マーケティング分析が行われるようになってきました。そして中でもデータ分析の中で注目を浴びている技術の一つに、「WEBスクレイピング」というものがあります。この記事ではWEBスクレイピングとは何か、また実際に「phpQuery」というphpのライブラリを利用して、WEBスクレイピングを行うプログラムを紹介していきます。
WEBスクレイピングとは?
WEBスクレイピングとは、インターネット上に公開されているWEBサイトからデータを収集し、特定の情報を抽出・加工する技術のことです。この技術を用いることによって、誰もがアクセスできるインターネット上のWEBサイトから、あらゆる情報を取得でき、ネット上の情報収集の効率化や、様々な分析を行うことができるようになります。
WEBスクレイピングの具体的な活用事例
WEBスクレイピングは様々な場面で役に立っており、具体的には、WEB上のニュースサイトから記事のタイトル情報を抜き出し一覧を作成したり、商品販売サイトから商品名や価格情報を抽出し、価格表を作成することができます。運営するサイトの記事の検索順位を定期的にスクレイピングし、検索順位の変動を分析することによって、SEO施策の効果測定を行うこともできます。
WEBスクレイピングをする際の注意点
WEBスクレイピングを実行する際の注意点として、スクレイピング対象のサイトの利用規約やサーバーへの負荷を考えて行う必要があります。万が一スクレイピング先のWEBサイトが配置されているサーバーに高負荷をかけてしまい、運営者のサイトに迷惑をかけてしまった場合は、大きな問題に発展してしまう可能性もあります。また、スクレイピングしたデータを公開する際は、そのデータが著作権法に抵触しないように注意する必要があります。
PHPでWEBスクレイピングを実装する方法
PHPでWEBスクレイピングを実装する方法について紹介していきます。この記事で実装するのは、「Fresopiya」というWEBサイトの記事のタイトル情報を抜き出していきます。今回WEBスクレイピングする「Fresopiya」というブログは、この記事のライターが運営するブログであり、この記事で紹介するプログラムにおいてはスクレイピングしても問題はありません。
phpQueryとは?
PHPでWEBスクレイピングをしていくにあたって、今回は「phpQuery」というライブラリを使用します。「phpQuery」を使い、WEBサイト上のHTML情報を解析しデータを取得することで簡単に実装することができます。このライブラリは「ここ」からダウンロードすることができます。
ディレクトリ構成
1
|
index.phpphpQuery-onefile.php
|
ディレクトリ構成としては、上記のように今回プログラムを記述する「index.php」ファイルと、ダウンロードした「phpQuery-onefile.php」ファイルを同じディレクトリに準備します。
index.phpに記述するプログラム
1
|
<?phprequire_once("./phpQuery-onefile.php");$html = file_get_contents("https://fresopiya.com/");echo phpQuery::newDocument($html)->find(".post-list-title")->text();?>
|
「index.php」ファイルには上記のようなプログラムを記述します。プログラムの大まかな流れとしては、WEBスクレイピングするためのライブラリである「phpQuery」を読み込み、スクレイピング対象のWEBサイトのhtmlファイルを取得し、抽出対象のデータを表示します。プログラムの詳細は以下に記述していきます。
phpQueryの読み込み
1
|
require_once("./phpQuery-onefile.php");
|
「index.php」ファイルに記述されている上記のプログラムは、WEBスクレイピングをするためのプログラムが記述された「phpQuery-onefile.php」ファイルを読み込んでいます。「require_once」は、同じファイルが一度しか読み込まれないようにチェックした上でファイル読み込みを行うメソッドです。
スクレイピング対象のファイル取得
1
|
$html = file_get_contents("https://fresopiya.com/");
|
「index.php」ファイルに記述されている上記のプログラムは、スクレイピング対象となるホームページのhtmlファイルを取得しています。「file_get_contents」は、ファイルの内容を全て文字列として読み込むメソッドで、今回は取得するページとして「https://fresopiya.com/」を設定しています。
データの抽出と表示
1
|
echo phpQuery::newDocument($html)->find("".post-list-title"")->text();
|
「index.php」に記述されている上記のコードは、取得したhtmlファイル上から、クラス名が「post-list-title」のタグを探し出し、その内容を取得し表示するコードです。「phpQuery::newDocument()」メソッドにて、phpQueryのドキュメントオブジェクトを生成し、「find()」メソッドにより、指定したクラスの情報を取得し、「text()」メソッドにより、取得したタグの中のテキスト情報を連結して結果を返します。「echo」というコードにより、その内容が表示されるようになります。
プログラムの実行結果
1
|
【React Native】状態管理「Redux」とは?その構成要素と役割のまとめ 【ReactNative】APIによる図書情報の取得方法 【ReactNative】Navigationによる画面遷移先への値の受け渡し 【ReactNative】FlatListによるテーブルの実装方法 【React Native】スタック(Stack) & タブ(Tab)ナビゲーションの実装 【React Native】Drawer navigationの実装 【React Native】Tab navigationの実装 【ReactNative】ReactNavigationを用いた画面遷移の実装 【ブログ改善】BJ Lazy Loadプラグインによる「オフスクリーン画像の遅延読み込み」の改善。 【ブログ運用】「Googleアドセンス」プログラムポリシーについて 【ブログ改善】Autoptimizeプラグインによるサイト読み込み速度の高速化 【ブログ改善】次世代フォーマットでの画像の配信「画像のWebP化」によるサイト読み込み速度の改善。 【ブログ分析】サイト読み込み速度分析ツール「PageSpeed Insight」の使い方・分析結果の見方について ...
|
実際に作成したプログラムを実行すると上記のように、「Fresopiya」というサイトの記事のタイトルを取得できたことが確認できました。
phpQueryを使用してみよう!
WEBスクレイピングとは何か、また、「phpQuery」というライブラリを使用し、WEBサイトからデータを抽出するプログラムについて紹介してきました。WEBスクレイピングとはWEB上からデータを抽出し加工する技術のことで、作業の効率化やマーケティング分析など、あらゆる場面で役に立っている技術です。また、WEBスクレイピングをする際は注意事項をしっかり守りましょう。
インフラエンジニア専門の転職サイト「FEnetインフラ」
FEnetインフラはサービス開始から10年以上『エンジニアの生涯価値の向上』をミッションに掲げ、多くのエンジニアの就業を支援してきました。
転職をお考えの方は気軽にご登録・ご相談ください。