PHPで簡単にスクレイピングする方法part3


みなさんこんばんは、tkです。
前回に引き続き、スクレピングについて紹介していこうと思います。
「もうスクレイピングなら余裕だぜ」と思われる方がいるかもしれませんが、実は前回までの内容のみだと大きな落とし穴があったのです。

落とし穴とは!?

実はJavaScript適用後のHTMLに対して一切スクレイピングできないのです!
それに対してJavaScriptで動的に値を取得しているサイトが結構な数存在しているのです。
phpQueryによるスクレイピングではJavaScript適用前のHTMLを取得しているため、JavaScriptで要素を追加したり、値を取得している部分は取得できないです。

Chromeによる確認

例えばchromeのデベロッパーツールを使用すればそのことが確認できます。
Chromeを開いた状態で
MacならCommand + option + U
WindowsならCtrl + U
これで表示されるものがphpQueryで取得できるものです。
MacならCommand + option + I
WindowsならCtrl + I
こちらで表示されるものは基本的にはJavaScript実行後(時間により変化する)のHTMLです。
よく比べてみるとサイトによって違いが生じているはずです。
他のブラウザでも同様に確かめられます。

どうしたらいいのか

前置きが長くなってしまいましたが、JavaScript実行後のHTMLを取得してスクレイピングできる方法があるのです。
そのためにはPHP Phantomjsを使います。
PHP PhantomjsはPhantomjsヘッドレスブラウザというものでHTMLを読み込んでJavaScript実行後のHTMLを返してくれます。

下準備

PHP Phantomjsを使用するための準備をしましょう。
まずはComposerをインストールしましょう。
以下ではCentOS7環境を前提とします。
Composerのダウンロードとパスの通っているところへ移動
$ curl -sS https://getcomposer.org/installer | php
$ mv composer.phar /usr/local/bin/composer
$ composer -V
これでComposerのバージョンが表示されたならオッケーです。

ちょっと長くなってしまったので今回はこの辺りにしておきましょう。
次回で実際にPHP Phantomjsを用いてスクレイピングしてみましょう。

最近PHPによるスクレイピングの内容が書かれている書籍を見つけたので紹介しておきます。
機械学習などのホットな話題にも触れていて単純に読み物としても面白いです。



スクレイピングについての記事をまとめておきます。
PHPで簡単にスクレイピングする方法
PHPで簡単にスクレイピングする方法part2
PHPで簡単にスクレイピングする方法part4

ではでは

ブログランキング
人気ブログランキングへ

tk

こんにちはtkです。長いモラトリアムを経て現在は無職。寝ながらお金を稼げるシステムを作れないかと夢想中。。。。 PHP、Ruby、Javaなんかをいじってたりして、Scala勉強中。趣味は映画・海外ドラマ・読書です。何かオススメあれば是非!

あわせて読みたい

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です