PHPでWEBスクレイピングする最善策を記しておきます。
※この記事のみどこというかポイントのようなものは以下のような事柄です。・・・対象読者はさだめていません。強いて書くならわたしと同じようなレベルな人が対象です。ここに書いてあることはすべて個人的な見解です。
- PHPをあまりさわったことがない
- PHPでWEBスクレイピングしたいけどやったことがない。
- PHPでWEBスクレイピングをやってみようかなと思っている人
- 他の言語でWEBスクレイピングやったことあるけどPHPではやったことがない
WEBスクレイピングとは、プログラムでネットの情報を収集することを言います。/関連記事としては以下のようなものがあります。
・ OctoparseでWebサイトのテーブルをごっそり取得する方法
・ windows10でnode.js + seleniumをテストする実践。
PHPでWEBスクレイピングする最善策を探す
PHPでWEBスクレイピングするならどの方法が一番よいのかをネットで検索してみました。
- 正規表現でほしい部分を抽出 → ✕ 正規表現なんてつかいたくありません
- phpQueryを使う → 〇 セレクター指定ができる。導入の価値あり。
- PHP Simple HTML DOM Parserを使う → phpQueryとほぼ同じような感じ。ぱっとみだとphpQueryのほうが使いやすそう
OKです。だいたいのサイトでここにあげたものを紹介してあります。一番解説されてるのが多かったのはphpQueryでした。ということでこれを使います。phpQueryはライブラリのでまず公式サイトからダウンロードしてきます。こちらのライブラリはphpファイルになっているのでrequier_once(“”);で読み込む必要があります。
phpQueryの公式サイト、およびダウンロードリンクは以下になるようです。
Google Code Archive – Long-term storage for Google Code Project Hosting.
phpQueryをダウンロードする
phpQueryのダウンロードサイトにいくといっぱいダウンロードリンクがありますが、基本的に一番上のやつを選べばよいです。わかる人は好きなのをえらべばいいと思います。
次にダウンロードしたzipファイルの中身を確認します。入っていたのはphpQuery-onefile.phpというファイルひとつのみでした。※phpQueryを使うにはこのファイルを読みこむ必要がありますので、Eclipseだったらプロジェクトにこのファイルをほおりこみます。
PHPでスクレイピングする環境
PHPでスクレイピングしようとおもったはいいが、そもそも開発環境がないみたいなことにあるかもしれません。JavaScriptやPythonのように簡単にはできない?・・・おそらくEclipse が一番簡単に環境構築きるのではないでしょうか?※あくまで個人的な見解です。
とりあえず最初は小さくはじめるのが大事ですから、とりあえずということであればEclipseで十分です。
phpQueryでWEBスクレイピング実践
phpQuery-onefile.phpをEclipseのプロジェクトにほうりこんだら、適当なphpファイルを作成して、以下の構文を記述。※スクレイピングするサイトは当サイト「初心者のプログラミング」のURLを指定しました。
<?php require_once(".\phpQuery-onefile.php"); $html = file_get_contents("https://xn--u9j207iixgbigp2p.xn--tckwe/"); echo phpQuery::newDocument($html)->find("h1")->text(); ?>
画像ものせておきましょう。
これで準備ができたのでEclipseのPHPWEBアプリケーション実行で実行してみます。するとなんと。普通にスクレイピングすることができました。
非常に小さなプログラムでしたが、この要領さえわかれば、あとはやりたいことに応じてプログラムを大きくしていくだけです。
phpQuery雑感
phpQueryをつかったことでPHPWEBスクレイピングの扉をあけることができたのような気がします。PHPのスクレイピングに関する情報を検索してみましたが、古くからある技術なのかどうかわかりませんが、解説してあるサイトがたくさんありました。あとは必要におうじて調べていけばよさそうですね。
この記事の情報は以上になります。
おまけ
※Eclipseを使用しています。phpQueryには2種類のアクセス方法があります。Eclipseで違うファイルを画面分割で表示したい場合はタブをドラッグします。
コメント