SeleniumとPhantomJSの環境構築

Docker上にUbuntuの構築

$ docker pull ubuntu:16.04
$ docker run -it ubuntu:16.04

Python3とSeleniumのインストール

 apt-get update
 apt-get install -y python3 python3-pip
 pip3 install selenium
 pip3 install beautifulsoup4

PhantomJSのインストール

apt-get install -y wget libfontconfig
mkdir -p /home/root/src && cd $_
wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2
tar jxvf phantomjs-2.1.1-linux-x86_64.tar.bz2
cd phantomjs-2.1.1-linux-x86_64/bin/
cp phantomjs /usr/local/bin/

日本語フォントが表示されるようにする

apt-get install -y fonts-migmix
cat <<EOF > /etc/fonts/local.conf
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
	<match target="pattern">
		<test qual="any" name="family">
			<string>serif</string>
		</test>
		<edit name="family" mode="assign" binding="strong">
			<string>MigMix 2P</string>
		</edit>
	</match>
</fontconfig>
EOF

Dockerをコミットしておく

exit
docker ps -a
docker commit (コンテナID) ubuntu-phantomjs

コンテナ起動

$ docker run -it -v $HOME(ホストのパス):$HOME(コンテナのパス) \
> -e LANG=ja_JP.UTF-8 \
> -e PYTHONIOENCODING=utf_8 \
> ubuntu-phantomjs /bin/bash

動作確認

seleniumu-capture.py

from selenium import webdriver

url = "http://www.aozora.gr.jp/cards/000081/files/46268_23911.html"

#PhantomJSのドライバを得る
browser = webdriver.PhantomJS()
#暗黙的な待機を最大3秒行う
browser.implicitly_wait(3)
#URLを読み込む
browser.get(url)
#画面をキャプチャしてファイルに保存
browser.save_screenshot("Website.png")
#ブラウザを終了
browser.quit()
cd $HOME(コンテナのパス)
python3 selenium-capture.py 

実行結果

Website.pngが出来上がる