Python × RPA

Docker上でSeleniumとPythonを動かす方法【composeでビルド】

docker-selenium-python

 

DockerでSeleniumを動かそうとしてもなかなか上手くできない・・
Docker上でSeleniumとPythonを動かす方法を紹介するね〜

 

本記事では、Docker上で、「実際に動く」SeleniumとPythonの環境の作り方をご紹介します。

最終的には、Docker上でSeleniumを使って、「yahooで何かを検索して、検索結果の画面をスクリーンショットする」サンプルプログラムも紹介します。(この部分はnoteに公開)

 

少しわかりづらいですが、こんなイメージです。

 

想定読者

・DockerでSeleniumを使ってブラウザの画面操作をしてみたい。

・自身の端末にDockerをインストールされている。

 

DockerでSeleniumとPythonを使うには

docker

Docker上でSeleniumを使おうとして、pip seleniumでインストールし、パソコンにChrome driverを入れてもなかなか使えない。。

という方も多いのではないでしょうか?

 

実はDocker上でSeleniumを使うには、パソコン上のブラウザにアクセスして使うのは困難(できない?)です。

このため、Docker上でSeleniumを使うには、次の3つの環境(コンテナ)が必要となります。

 

・selenium/hub

・selenium/node-chrome-debug

・Python環境

 

selenium/hub

これは、「selenium/node-chrome-debug」に向けてseleniumのコマンド(処理)を実行するための環境(コンテナ)です。

このコンテナのイメージは、Docker hubで公開されていて、誰でも使えます。

Docker hub -  selenium/hub

 

selenium/node-chrome-debug

これは、selenium/hubからの処理を実際にChromeで実行する環境です。

1つのselenium/hubに対して、複数の実行環境を作ることも可能です。

また、実行画面を確認するために、VNCという画面共有するアプリもインストールされています。

これもDocker hubで公開されています。

Docker hub - selenium/node-chrome-debug

 

Python環境

これは、Pythonを動かす環境です。

ライブラリとしては、最低限pip seleniumSeleniumだけ入っていればOKです。

 

全体イメージはこのようになります。

 

selenium hub node

 

 

Docker上でSelenium・Pythonを使うメリット

merit

 

正直、PythonとSeleniumを使う分には、Docker上で行わなくてもできます。むしろ、Dockerを使わない方が、断然に簡単にできます。

ローカルのパソコンにChrome Driverを入れて、それをPythonで繋いで実行するだけなので。

 

ただ、Docker上でSeleniumを使うメリットを3つ紹介します。

・レンタルサーバなどの他の環境にも移行しやすい。24時間スケジュール実行も可能となる。

別端末からSeleniumの実行画面を確認できる。

・簡単に複数のSelenium+Python環境を構築できる。

 

レンタルサーバなどの他の環境にも移行しやすい。24時間スケジュール実行も可能となる

DockerでSelenium・Pythonを作ることで、他の環境にも移行しやすくなります。

Dockerイメージに元になっているDockerfileとdocker-composeファイルさえあれば、簡単に同じ環境を構築できるからです。

これにより、レンタルサーバなどの外部サーバにselenium+Python環境を作れば、24時間なにかの処理を行わせることもできます。

 

別端末からSeleniumの実行画面を確認できる。

selenium/node-chrome-debugに画面共有のアプリも搭載されているため、パソコンでプログラムを実行して、動作確認は別端末で行うことも可能になります。

上のツイートの動画のようなイメージです。

 

端末を分けることで、動作確認の作業効率も上がります。

また、個人ではなかなかしないかもしれませんが、複数端末でも動作確認をできるようになります。

 

簡単に複数のSelenium+Python環境を構築できる。

Selenium+Python環境といっても、Pythonのバージョン、インストールするライブラリによって複数のPython環境でSeleniumを使うことがあります。

例えば、こんな感じのバリエーションです。

・Selenium+Python環境(Anacondaあり)

・Selenium+Python環境(Anacondaなし、Pythonのみ)

・Selenium+Python環境(cron利用)

 

こんな時に、Dockerだと(実際のパソコン単位ではなく)コンテナ単位ですぐに作ることができ、とても便利です。

 

 

Docker上でSeleniumとPython環境を構築する方法

code

それでは、Docker上でSeleniumとPython環境を構築する方法を紹介します。

既にパソコンにDockerが入っている方は、次の5つのステップを行えば、すぐにDockerでSelenium+Python環境が作れ、サンプルプログラムを実行できます。

 

必要なファイルは次の3つのファイルになります。

・docker-compose.yml

・Dockerfile

・sample.py(サンプルプログラム)

  yahooで何かを検索して、検索結果の画面をスクリーンショットするといった簡単な処理です。

ファイルの中身は、他のサイトなどを参考にして自分で考えてみると、かなり勉強になります!

 

この3つのファイルの中身は、次のnoteで公開しています。

Docker上でSeleniumとPythonを動かすコード【composeでビルド】 ※質問対応あり

 

他のサイトで調べる時間がない・・

すぐに動作するものを作りたい!!

という方は参考にしてみてください。ファイルの内容について質問対応もしています。

 

 

DockerでSeleniumとPython環境を構築する手順

それでは、上の3つのファイルを使って、環境を構築する手順を説明します。

 

step
1
3つファイルを同一フォルダに格納する

上の3つのファイルを任意の同一フォルダに格納します。

 

step
2
docker-composeでDockerイメージをビルドする

Macの場合はターミナル、Windowsの場合はコマンドプロンプトで、step1で作成したフォルダに移動し、ビルドのコマンドを打ちます。

 

cd (step1のフォルダ)
docker-compose build
 ・・・・
Successfully built 0da06b4ce83f
Successfully tagged selenium_build_web:latest

 

最後に、Seccessfully builtとtaggedができていればOKです。

selenium_build_webの部分は、step1の「フォルダ名+_web」となります。

 

step
3
docker-composeからコンテナを起動する

ビルドが終わったら、次はターミナルorコマンドプロンプトでコンテナを起動します。

 

docker-compose up -d

Creating selenium-hub ... done
Creating python-selenium ... done
Creating chrome          ... done

 

上の3つのコンテナがdoneとなっていればOKです。

これにより、3つのコンテナが正常に起動している状態です。

 

step
4
Python環境のコンテナのbashを起動する

次のコマンドの通り、Python環境のコンテナのbashを起動します。

docker exec -it python-selenium bash

 

これにより、コンテナのOSに入ることができます。

 

step
5
Seleniumのサンプルコードを実行する

step1で作成したフォルダをマウントしている、workフォルダに移動します。

そして、workフォルダ内の「sample.py」を実行します。

「sample.py」を実行する前に、vncアプリ(AppStore or Google Playから無料ダウンロード可能)を起動しておくと、モバイル端末で、処理の画面遷移を確認できます。

 

cd work
python sample.py

 

この処理で、step1で作成したフォルダ(Pythonコンテナのworkフォルダ)にスクリーンショットの画像ファイルをが保存されます。

今回は、本ブログの名前「inasala note」と検索したので、次の画像が保存されました。

yahoo inasala note

 

 

DockerでSeleniumとPython環境を停止する手順

停止するときは、次の2ステップになります。

step
1
Python環境のコンテナから出る

これはコンテナ上で、exitと打つだけです。

exit

 

step
2
コンテナを停止する

パソコンのターミナル or コマンドプロンプト上で、次のコマンドをうち、3つのコンテナを停止します。

docker-compose down

Stopping python-selenium ... done
Stopping chrome          ... done
Stopping selenium-hub    ... done
Removing python-selenium ... done
Removing chrome          ... done
Removing selenium-hub    ... done
Removing network selenium_build_default/code>

 

上のようにすべて「done」になれば、正常に停止できてます。

 

以上、Docker上でSeleniumとPythonを動かす方法の解説でした。

ぜひぜひSeleniumでいろんなサイトの自動プログラムを作ってみてください。

 

以上となります。

最後まで読んでいただき、ありがとうございました。

 

 

0からDockerを知りたい方向け

Pythonは、パソコンではなくDockerで使った方がよいメリットを解説しています。

【Python環境構築】パソコンではなくDockerへのインストールが断然おすすめ

 

0からPythonを勉強したい方向け

おすすめのUdemy講座を紹介します。筆者もこの講座で勉強しました。

米国データサイエンティストがやさしく教えるデータサイエンスのためのPython講座

 

よく読まれている記事

insta-auto-post 1

  インスタって自動で投稿できないのかな。いつもスマホで投稿するの大変だし・・ Pythonを使えば、インスタで自動で投稿できるよ!!特別に紹介するね ...

python-consult_1 2

  AI・機械学習、データサイエンティスト、、やっぱりこれからの時代Pythonは勉強すべきだよね!   その通り。Pythonは今後も伸び ...

【保存版】PythonでできるExcel操作のまとめ一覧 3

  Excelで作業するのって大変だな〜 なにか楽な方法ないかな〜   Excelの集計や単純作業は、Pythonで楽にできるよ!!この一覧 ...

python-works 4

ここでは、サイト管理者のいなサラがこれまでPythonで作ったものをご紹介します。 以下のリンクで、実際の作り方やソースコードを公開しているので、ぜひ参考にして ...

-Python × RPA

© 2021 inasala note