既存のサイトからデータを取得して欲しいという要望があったので、PhantomJSを使ってプログラムからブラウザを操作し、スクレイピングすることを最近行っています。
Macにはすんなりインストールできて、プログラムもある程度出来上がったのでサーバーにもインストールして動作確認をしてみようと、PhantomJSをインストールしてみたけどエラーが出てインストールが完了しませんでした。
その時のエラー内容を記載しておきます。
まだきっちり調べてませんが、他の人も問題に上げているようで解決方法がはっきりしていないように感じます。
環境
CentOS | 6.4 |
---|---|
PhantomJS | 1.9 or 2.0 |
PhantomJSのインストール方法
Linux用バイナリにはまだ問題があるようで、ソースからのインストールを推奨すると公式サイトには書いてあります。
Binary packages for Linux are still being prepared. There are still issues to be solved until a static build is available (see issue 12948 for more details).
In the mean time, it is recommended to build the Linux version from source.
バイナリの代わりにソースからインストールする方法も書かれているので、それに従ってインストールします。
Build | PhantomJS
まず必要なパッケージをyumでインストールします。
sudo yum -y install gcc gcc-c++ make flex bison gperf ruby \ openssl-devel freetype-devel fontconfig-devel libicu-devel sqlite-devel \ libpng-devel libjpeg-devel
その後、PhantomJSのソースをGitから取得しビルドします。
cd /usr/local/src git clone git://github.com/ariya/phantomjs.git cd phantomjs git checkout 2.0 ./build.sh
PhantomJS2.0をビルドした結果
2.0でビルドすると次のエラーが発生し、インストールに失敗します。
最終あたりのログを抜粋しています。
Encountered 4 configuration warning(s): ! QtQuick module not found, QML APIs will not be built ! Missing GStreamer or QtMultimedia, disabling HTML5 media element support ! Missing QtTest module, disabling DumpRenderTree, WebKitTestRunner and tests ! QtWebKitQml will not be build. It is not supported with static linking The WebKit build was disabled for the following reasons: * Missing gperf from PATH * Missing ruby from PATH make: `first' に対して行うべき事はありません. Building main PhantomJS application... cd src/ && ( test -e Makefile.phantomjs || /usr/local/src/phantomjs/src/qt/qtbase/bin/qmake /usr/local/src/phantomjs/src/phantomjs.pro -o Makefile.phantomjs ) && make -f Makefile.phantomjs Project ERROR: Unknown module(s) in QT: webkitwidgets make: *** [sub-src-phantomjs-pro-make_first-ordered] エラー 3
PhantomJS1.9をビルドした結果
2.0では失敗するので1.9でやればうまくいくと書かれているものがあったので、やってみたけどこれも失敗します。
# /usr/local/src/phantomjsで
git checkout 1.9
./build.sh
最終あたりのログを抜粋しています。
g++ -m64 -Wl,-O1 -Wl,-rpath,/usr/local/src/phantomjs/src/qt/lib -o ../bin/phantomjs phantom.o callback.o webpage.o webserver.o main.o csconverter.o utils.o networkaccessmanager.o cookiejar.o filesystem.o system.o env.o terminal.o encoding.o config.o childprocess.o repl.o gif_err.o gifalloc.o egif_lib.o gif_hash.o quantize.o gifwriter.o mongoose.o linenoise.o utf8.o qcommandline.o minidump_file_writer.o convert_UTF.o md5.o string_conversion.o crash_generation_client.o exception_handler.o log.o linux_dumper.o linux_ptrace_dumper.o minidump_writer.o file_id.o guid_creator.o memory_mapped_file.o safe_readlink.o moc_phantom.o moc_callback.o moc_webpage.o moc_webserver.o moc_networkaccessmanager.o moc_cookiejar.o moc_filesystem.o moc_system.o moc_env.o moc_config.o moc_childprocess.o moc_repl.o moc_qcommandline.o qrc_phantomjs.o qrc_ghostdriver.o qrc_WebKit.o qrc_InspectorBackendStub.o -L/usr/local/src/phantomjs/src/qt/lib -L/usr/local/src/phantomjs/src/qt/plugins/codecs -lqcncodecs -L/usr/local/src/phantomjs/src/qt/lib -lqjpcodecs -lqkrcodecs -lqtwcodecs -lQtWebKit -lQtGui -lfreetype -lfontconfig -lQtNetwork -lQtCore -lm -ldl -lrt -lpthread /usr/bin/ld: cannot find -lQtWebKit collect2: ld はステータス 1 で終了しました make[1]: *** [../bin/phantomjs] エラー 1 make[1]: ディレクトリ `/usr/local/src/phantomjs/src' から出ます make: *** [sub-src-phantomjs-pro-make_default-ordered] エラー 2