渋谷ほととぎす通信

新しいこと、枯れたこと問わず大庭が興味を持ったものを調査、生活の効率を求める完全趣味の技術ブログ。基礎を大事にしています。

SeleniumとPhantomJS連携のブラウザ経由スクレイピングする前のdocker環境構築


前回記事からの続きです。
最低限の機械学習の知識を手に入れるため勉強中。

環境構築

  1. Dockerインストール
  2. DockerにUbuntuイメージをインストール
  3. Ubuntuを実行してログイン
  4. Ubuntuに各種ソフトウェアのインストール

1. Dockerインストール

brew install docker
brew cask install docker

※caskが未インストールの場合はbrew install caskroom/cask/brew-caskを実行
参考 : Docker環境をHomebrewで手軽に作成 - Qiita

2. DockerにUbuntuイメージをインストール

以下のコマンドでDockerにUbuntuイメージをインストールしようとすると...

docker pull ubuntu:16.04

このようなエラーが発生します。

Warning: failed to get default registry endpoint from daemon (Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?). Using system default: https://index.docker.io/v1/
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

まずはApplication/Docker.appを実行し、/var/run/docker.sockを生成する必要があるようです(自動生成)。

f:id:esakun:20171106015528p:plain:w450

Nextクリック。

f:id:esakun:20171106015538p:plain:w450

OKをクリックするとID/Passが求められます。

再度以下のコマンドを実行してUbuntuイメージをインストールします。

docker pull ubuntu:16.04
Status: Downloaded newer image for ubuntu:16.04

このようなログが出力されインストールは成功したようです。

3. Ubuntuを実行してログイン

docker run -it ubuntu:16.04

Vagrantでいうところのvagrant sshみたいなものでしょうか。

4. Ubuntuに各種ソフトウェアのインストール

内容については基本以下のコマンドを読んで確認してください。

# python3とpip3のインストール
apt-get update
apt-get install -y python3 python3-pip

# Seleniumのインストール
pip3 install selenium

# BeautifulSoupのインストール
pip3 install beautifulsoup4


#PhantomJSに必要なライブラリインストール
apt-get install -y wget libfontconfig

# PhantomJSのバイナリをBitbucketからダウンロード
wget https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-linux-x86_64.tar.bz2

# jxvfオプションはとにかく書庫を解凍させる
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/

tarコマンドののオプションについてはコチラを参考
tarのオプションをまとめる - Qiita

5. 日本語フォント対応

apt-get install -y fonts-migmix

6. Dockerのイメージを保存

docker ps -a
docker commit 直近のコンテナID ubunts-phantomjs

一旦環境構築はここまででです。

環境

  • macOS 10.12.6
  • Python3.5.2
  • pip3 8.1.1
  • BeautifulSoup 4.6.0
  • docker 17.09.0-ce
  • Ubuntu 16.04