もくじ
スクレイピング環境を構築するなら、Dockerを使うのがおすすめ!!
高度なスクレイピング環境を構築しようと思ったら、少なくとも以下の環境構築が必要です。
- Python(プログラミング環境)
- Chromeドライバー(ブラウザを操作するためのドライバー)
- Chrome(ブラウザ)
しかも、それぞれのバージョンを合わせなければならないなど、難易度は高く、構築に数時間かかってしまうこともあります。
そのため、Dockerを使って仮想環境ごと用意してしまうのがおすすめです。
Dockerとは
Dockerをインストールしていない方は、以下のサイトなどを参考に、Dockerの環境を構築してください。
環境構築手順
今回は、特定のサイトに接続して、スクリーンショットを撮ることを目標とします。
ソースコードなどのファイルは下記のように配置します。

Dockerfile
以下の環境を用意するDockerfileを用意します。
- Python 3.7
- 作業用ディレクトリ(ソースコードや結果の保存用)
- selenium(スクレイピング用のpythonライブラリ)
- chromeドライバー
- chrome
- 日本語設定(文字化け防止)
# ベースイメージはpython:3.7 FROM python:3.7 # 環境変数設定 ENV PYTHONIOENCODING utf-8 ENV TZ='Asia/Tokyo' # workdirの設定 WORKDIR /app # 作業ディレクトリ作成 RUN mkdir /app/source RUN mkdir /app/data # apt-getのアップデートなど RUN apt-get -y update RUN apt-get -y upgrade RUN apt-get install -y apt-utils RUN pip install --upgrade pip # 必要なpythonライブラリのインストール RUN pip install selenium # Chromeドライバーのダウンロード RUN wget -q -O /tmp/chromedriver.zip http://chromedriver.storage.googleapis.com/`curl -sS chromedriver.storage.googleapis.com/LATEST_RELEASE`/chromedriver_linux64.zip RUN unzip /tmp/chromedriver.zip chromedriver -d /usr/local/bin/ # Chromeのインストール RUN apt-get install -y libgbm1 libappindicator3-1 libappindicator1 fonts-liberation libasound2 libnspr4 libnss3 libxss1 lsb-release xdg-utils libfontconfig RUN wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb RUN dpkg -i google-chrome-stable_current_amd64.deb # 日本語設定 RUN export LANG=C.UTF-8 RUN export LANGUAGE=en_US: RUN apt-get install -y fonts-ipafont # コンテナ起動時に実行するコマンドを設定 CMD [ "python", "source/main.py" ]
docker-compose.yml
今回は使用するコンテナは一つだけなので、コマンドだけでも環境構築は可能なのですが、docker-compose.ymlを使うと、必要なコマンドがぐっと短くなります。
やっていることは、ホストPCのsourceディレクトリとdataディレクトリを、コンテナのディレクトリにそれぞれマウントしているだけです。
version: "3" services: pythonapp: container_name: "app" build: ./app volumes: - ./app/source:/app/source - ./app/data:/app/data
main.py
実際にスクレイピングを行うコードはこちら。
seleniumというライブラリを使って、指定のurlにアクセス、スクショを撮っています。
from selenium import webdriver import time # chromeドライバーを起動する時のオプションを設定 options = webdriver.ChromeOptions() options.add_argument("--headless") # ヘッドレスで起動 options.add_argument('--no-sandbox') # 仮想環境下では、sandboxで起動すると失敗するので無効にする options.add_argument('--disable-gpu') # ヘッドレスモードで起動するときに必要 options.add_argument('--window-size=1280,1024') # 画面サイズの指定 # chromeドライバーを起動 driver = webdriver.Chrome(options=options) # googleを開く driver.get("https://www.google.co.jp/") # 画面が表示されるまで待つ time.sleep(3) # スクリーンショットを撮る driver.save_screenshot("./data/screenshot.png")
実行
下記のコマンドを実行すれば、必要な環境が構築されたdockerコンテナが起動し、下図のようなスクリーンショットがdataディレクトリ内に保存されるはずです。

コンテナという仮想環境を構築できるソフトウェア。
作った仮想環境を簡単に再利用・配布もできる。
https://www.docker.com/why-docker