PhantomJS のインストール

こんにちは!

グローバルソリューション事業部のcharleszです。

今日から数回にわたって、PhantomJSを簡単に紹介します。

 

PhantomJSとは?

 

PhantomJSは、コマンドラインで使えるヘッドレス・ブラウザで、オープンソースのプロジェクトです。

 

ヘッドレス・ブラウザって??

ヘッドレス… (・・;) 首が取られてしまうのか?!

実は、ヘッドレス・ブラウザとは、Webコンテンツを画面上に描くグラフィック・ユーザ・インタフェース(GUI)を省略したブラウザです。

以下のようなイメージです。

普通のブラウザ ヘッドレス・ブラウザ
GUI なし
↑↓ ↑↓
DOM DOM
↑↓ ↑↓
Webコンテンツのダウンロード Webコンテンツのダウンロード

こう見ると、確かに首が取れてますね (ーー;)

 

PhantomJS以外にも、いろいろなヘッドレス・ブラウザがあります。

例えば、

ブラウザ 使える環境 JavaScriptサポート ライセンス形態
HtmlUnit Java Open Source
Ghost Python Open Source
Twill Pythonとコマンドライン × Open Source
SimpleBrowser .Net4 × Open Source
ZombieJS Node.js Open Source
EnvJS Java/Rhino Open Source

などがあります。

 

ヘッドレス・ブラウザがよく使われるケース

  1. ウェブページの自動化テスト
  2. ウェブからの情報収集
  3. SEO対策 (サーバで実行し、クライアントがGoogleBotなどである場合は、それに最適化した内容を送ります。)

 

PhantomJSの特徴

他にも似たようなヘッドレス・ブラウザがありますが、PhantomJSの最大の特徴は下記の2つだと思います。

・コマンドラインのインタフェース
コマンドラインのインタフェースこそ、特定なプログラミング言語に限らず、自由な使い方ができます。
・他のブラウザを頼らないネイティブなヘッドレス・ブラウザ
他のブラウザを頼らないから、デプロイ方法が簡単になります。

 

PhantomJSの情報収集

・公式サイト

http://phantomjs.org/

 

・サポートする機能

– DOM処理

– CSS selector

– JSON

– Canvas

– SVG

 

・APIドキュメント

http://phantomjs.org/api/

 

PhantomJSのインストール

 

PhantomJSの取得

http://phantomjs.org/download.html

 

Windowsでのインストール

取得した.zipファイルを解凍して、適切なディレクトリに移動します。

それから、そのディレクトリを環境変数のPATHに追加します。

 

Linuxでのインストール

(/opt/phantomjs にインストールする場合)
yum install fontconfig freetype libfreetype libfontconfig libstdc++
wget --output-document=phantomjs-1.9.8-linux-x86_64.tar.bz2 https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-1.9.8-linux-x86_64.tar.bz2
tar xjvf phantomjs-1.9.8-linux-x86_64.tar.bz2
mv phantomjs-1.9.8-linux-x86_64 /opt/
pushd /opt/
ln -s phantomjs-1.9.8-linux-x86_64/ phantomjs
PATH=$PATH:/opt/phantomjs/bin
popd

 

Microsoftのフォントサポート

yum install rpmdevtools rpm-build
yum --enablerepo=rpmforge install cabextract
rpmdev-setuptree
cd ~/rpmbuild/SRPMS
wget https://downloads.sourceforge.net/project/mscorefonts2/rpms/msttcore-fonts-installer-2.2-1.src.rpm
rpm -Uvh msttcore-fonts-installer-2.2-1.src.rpm
cd ~/rpmbuild/SPECS/
rpmbuild -bb msttcore-fonts-installer-2.2-1.spec
yum install ~/rpmbuild/RPMS/noarch/msttcore-fonts-installer-2.2-1.noarch.rpm

Linux上でPhantomJSでウェブ画面のスナップショットを作るため、日本語フォントサポートのインストールが必要です。

以下はCentOS 6,5で日本語フォントのサポートをインストールするコマンドです。

 

PhantomJSのコマンドライン

 

phantomjs [options] somescript.js [arg1 [arg2 [...]]]

 

コマンドライン・オプション

オプション
短いフォーム
デフォルト値
説明
–webdriver-selenium-grid-hub none Selenium Grid HUBへのURL、–webdriverと一緒に使用
–webdriver 127.0.0.1:8910 Remote WebDriveモードで起動
–web-security=[true|false] true ウェブセキュリティ設定を有効にして、クロスドメインのアクセスを阻止
–version -v バージョン情報をプリントして、プログラムの実行を終了
–ssl-protocol=[sslv3|sslv2|tlsv1|any’] SSLv3 SSLプロトコル
–ssl-certificates-path=<val> uses system default 証明書
–script-encoding=encoding utf8 スクリプトファイルの文字コード
–remote-debugger-port スクリプトをデバッグ環境で実行開始し、指定したポートにリセン
–remote-debugger-autorun no スクリプトをデバッグ環境で即時実行
–proxy=address:port プロキシサーバ
–proxy-type=[http|socks5|none] http プロキシサーバの種類
–proxy-auth プロキシサーバの認証情報 ユーザ:パスワード
–output-encoding=encoding utf8 出力の文字コード
–max-disk-cache-size=size ディスクキャッシュの最大サイズ(単位KB)
–local-to-remote-url-access=[true|false] false ローカル内容からリモートURLへのアクセスが許可されるかどうか
–local-storage-quota=number ローカルストレージの最大サイズ
–local-storage-path=/some/path ローカルストレージ及びWebSQLの内容を保存するパス
–load-images=[true|false] true 画像を読み込むかどうか
–ignore-ssl-errors=[true|false] false 無効なSSL証明書を許可するかどうか
–help -h ヘルプの内容をプリントして、プログラムの実行を終了
–disk-cache=[true|false] false ディスクキャッシュの有効と無効(yes|noもOK)
–cookies-file=/path/to/cookies.txt 恒久的なCookie内容を保存するファイルのパス

 

サポートできるスクリプト

PhantomJSは、JavaScriptとCoffeeScriptのどちらでも記述できます。

Hello Worldと記述してみましょう。

 

・JavaScriptバージョン

console.log('Hello, world!');
phantom.exit();

・CoffeeScriptバージョン

console.log 'Hello, world!'
phantom.exit()

 

いかがでしたでしょうか。
今回はここまでです!
次回は、PhantomJSでWebコンテンツの内容を取得する方法について紹介します。
お楽しみに!

Share on LinkedIn
LINEで送る
Pocket

claraer

claraer