読者です 読者をやめる 読者になる 読者になる

tumblr

tumblr(タンブラー)は、メディアミックスブログサービス。ブログとミニブログ、そしてソーシャルブックマークを統合したマイクロブログサービスである。アメリカのDavidville.inc(現: Tumblr, Inc.)により2007年3月1日にサービスが開始された。

CentOSにphantomJSをインストールする

Javascript サーバ技術

最近は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!