CentOSにphantomJSをインストールする
最近はJSとCSSとHTML漬けの毎日です。
スクレイピングをやりたいときが多々あるんだけど、rubyのHpricotはちょっと使いにくくてやだ。というかhtmlスクレイピングするんだからjsでやりたくなるのは当然だろ!って感じでphantomJSに手を出してみることにした。
phantomJSって何?
"PhantomJS is a minimalistic, headless, WebKit-based, JavaScript-driven tool"
headless=スクリーンがない=コマンドと考えればいい。要はブラウザから画面と取り除いてJavaScriptによるスクリプティングを可能にしたコマンドツール。逆に言うとDOM+JavaScript+Networkingをコマンドにしたもの。
karasuyamatenguの日記
ということ。jsがそのまま使えるし、DOM handling, CSS selector, JSON, Canvas, SVGまで扱える優れもの。しかも最近話題のcoffeescriptでもいけるみたい。
CentOSでどうやってインストールするんだよ
http://code.google.com/p/phantomjs/wiki/BuildInstructionsに構築方法が書いてあるけど、centos向けのはない。ので自分で適当にやる。
phantomJSに必要なのは
・phantomJS本体
・QtWebkit
・SQlite
ざっくりとこんな感じか。
まずはphantomJS本体をインストールする。http://code.google.com/p/phantomjs/downloads/listからダウンロードして、解凍する。現時点で1.2が最新らしい。
次にQtWebkitをインストールする。centOSのデフォルトのリポジトリにはこれらの関連パッケージは入ってないので、atrpmsというリポジトリを追加する。
[shimomura@localhost phantomjs-1.2.0]$ vim /etc/yum.repos.d/atrpms.repo
以下のように編集。
[atrpms]
name=ATrpms manual
baseurl=http://dl.atrpms.net/el5-$basearch/atrpms/testing/
gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms
gpgcheck=1
編集が出来たらGPGキーをインポートしてインストール。
[shimomura@localhost phantomjs-1.2.0]$ rpm --import http://packages.atrpms.net/RPM-GPG-KEY.atrpms
[shimomura@localhost phantomjs-1.2.0]$ yum install qt47-webkit qt47-webkit-devel qt47-devel sqlite
インストールするとqmake-qt47というコマンドが入ってるので、それをphantomJSの解凍ディレクトリ内で実行してMakefileを作成し、makeしてインストール。
[shimomura@localhost phantomjs-1.2.0]$ cd phantomjs-1.2.0
[shimomura@localhost phantomjs-1.2.0]$ qmake-qt47 && make && make install
そうするとbinディレクトリとその中にphantomjsのコマンドが作成される。なぜか/binとかに入ってないので、これをPATHが通った適当なディレクトリにいれる。
[shimomura@localhost phantomjs-1.2.0]$ cp .bin/phantomjs /bin
[shimomura@localhost phantomjs-1.2.0]$ phantomjs hello.js
2011-07-31T02:12:53 [WARNING] phantomjs: cannot connect to X server :2.0
これで完了・・・と思ったら動かない。Xが入ってない場合はそれを入れて立ち上げないといけない。結局仮想画面がないといけないのね。
[shimomura@localhost phantomjs-1.2.0]$ yum install xorg-x11-server-Xvfb xorg-x11-fonts*
[shimomura@localhost phantomjs-1.2.0]$ Xvfb :2 -screen 0 800x600x24 2> /dev/null &
[shimomura@localhost phantomjs-1.2.0]$ export DISPLAY=:2.0
これで完了。やっとうまくいった。
[shimomura@localhost phantomjs-1.2.0]$ phantomjs hello.js
Hello, world!