LoginSignup
15
16

More than 1 year has passed since last update.

Docker + selenium + chromedriver のスクレイプ環境を構築する

Posted at

はじめに

seleniumとchromedriverを用いたスクレイプ環境をDockerコンテナ上で構築したので、そのやり方といくつかハマりポイントをまとめます。

今回動かしたかったライブラリはざっくり以下です。

from selenium import webdriver
import chromedriver_binary
from selenium.webdriver.chrome.options import Options

やり方

Dockerfile

下記のサイトに記載されているDockerfileをお借りしました。
Docker 内で Chrome とSelenium を使ったスクレイピング実行環境を構築してみた

実行、エラー

そのままdocker buildして、スクレイプを実行すると次のように怒られます。

selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 93

このときインストールしたgoogle-chrome-stableのバージョンが92だったので、ChromeDriverのバージョンを92用にしても、なぜか同様のエラーが出ました。なぜonly supports version 93になってしまうのかわかっていないのですが、仕方ないのでgoogle-chromeをversion 93にしました。

google-chromeのバージョン指定

この時点でversion 93はstable版ではありません。なので、次のようにgoogle-chrome-unstableをバージョン指定でインストールしました。

RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add && \
wget http://dl.google.com/linux/deb/pool/main/g/google-chrome-unstable/google-chrome-unstable_93.0.4577.18-1_amd64.deb && \
apt-get install -y -f ./google-chrome-unstable_93.0.4577.18-1_amd64.deb

バージョン名(93.0.4577.18-1)は以下のサイトで調べられます。希望するバージョン名を調べて、置き換えてください。

Package "google-chrome-unstable"

chromedriverのバージョン指定

google-chromeのバージョンに合わせてchromedriverのバージョンも適切なものにします。下記サイトよりバージョンを選択して、"chromedriver_linux64.zip"のダウンロードリンクを取得します。

ChromeDriver - WebDriver for Chrome - Downloads

次のように、Dockerfileのchromedriverインストール部分のURLを変更してください。

ADD https://chromedriver.storage.googleapis.com/93.0.4577.15/chromedriver_linux64.zip /opt/chrome/

まとめ

最終的に、次のようなDockerfileになりました。

Dockerfile.
FROM python:3

RUN apt-get update && apt-get install -y unzip wget vim

# google-chrome 変更部分①
RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add && \
wget http://dl.google.com/linux/deb/pool/main/g/google-chrome-unstable/google-chrome-unstable_93.0.4577.18-1_amd64.deb && \
apt-get install -y -f ./google-chrome-unstable_93.0.4577.18-1_amd64.deb

# ChromeDriver 変更部分②
ADD https://chromedriver.storage.googleapis.com/93.0.4577.15/chromedriver_linux64.zip /opt/chrome/
RUN cd /opt/chrome/ && \
unzip chromedriver_linux64.zip

# python package
RUN pip install selenium && \
pip install bs4 && \
pip install oauth2client

ENV PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/chrome

元記事様から、変更した部分をが2つありました。
こちらのDockerfileの、バージョン名を適宜変更すれば、環境構築に成功するのではないでしょうか。

おわりに

最後までご精読ありがとうございました。
他の解決方法や、ChromeDriverのversionに関係なくThis version of ChromeDriver only supports Chrome version 93になってしまう原因が分かる方いましたらコメントで教えて頂けますと幸いです。

15
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
16