[PHP] PhantomJSを使ってJavaScriptでレンダリングされるページをスクレイピングする

サーバーサイドでクローンを使っていくつかのサイトを定期的にスクレイピングしているのだけど、新たに追加するサイトがAngularJSで書かれているようで、file_get_contents関数などではHTMLを取得できないことがわかった。さてどうするか。

ヘッドレスブラウザのPhantomJSを使えば、JavaScriptでレンダリングされた結果のHTMLをサーバーサイドでも取得できそうだ。PHP PhantomJSというPHPのインタフェースも公開されているようなので、LaravelのCommandとして実装してみる。

PhantomJSのセットアップ

PhantomJS | PhantomJS
http://phantomjs.org/

Linux 64-bitをダウンロードして bin ディレクトリに格納。


動作確認

PHP PhantomJS

GitHub – jonnnnyw/php-phantomjs: Execute PhantomJS commands through PHP

コーディング

以下のサイトのサンプルを拝借してテスト。

PHP PhantomJS を使ってPHPでヘッドレスブラウジング | QUARTETCOM TECH BLOG
http://tech.quartetcom.co.jp/2016/04/07/php-phantomjs/


動いた。