質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

解決済

1回答

2218閲覧

dockerで構築した環境内でseleniumを使いたいです

penuts_batapi

総合スコア1

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Chrome

Google Chromeは携帯、テレビ、デスクトップなどの様々なプラットフォームで利用できるウェブブラウザです。Googleが開発したもので、Blink (レンダリングエンジン) とアプリケーションフレームワークを使用しています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

0クリップ

投稿2021/04/02 12:02

編集2021/04/02 12:05

前提・実現したいこと

現在私はwindows10、docker、ubuntu(キノコードさんの動画の見様見真似で環境構築をしているため詳しく理屈はわかりません)、jupyter lab上でpythonライブラリのseleniumを使おうと思っています。しかし以下のエラーが発生しており、学習が進まず困っています。

発生している問題・エラーメッセージ

Message: 'C:\Users\study\OneDrive\デスクトップ\docker.python\chromedriver_for_win.exe' executable needs to be in PATH. Please see https://sites.google.com/a/chromium.org/chromedriver/home

該当のソースコード

python

1from selenium import webdriver 2import time 3import pandas as pd 4 5browser = webdriver.Chrome(R"C:\Users\study\OneDrive\デスクトップ\docker.python\chromedriver_for_win.exe") #カッコ内はパスです。

試したこと

まずchrome driverをdockerとCドライブの共有フォルダに入れました。

その後色々なサイトをあさり、「\」を「/」に変えたり、\を二つにしたり、raw文字列で読み取らせるためにpathの前にrをつけたりとしましたが、どれもうまくいきません。ちなみにRをpathの前につけないとまずdecodeしてくれない様です。

補足情報(FW/ツールのバージョンなど)

anacondaで起動した方のjupyterlabはRとpathを通しただけで、seleniumが動作してくれます。しかしdockerで環境構築した方ではどうしてもうまくいきません。

dockerに関する記事もいくつか参照しましたが、もしかすると問題はdockerを立ち上げた時のdocker fileに問題があったのでしょうか?

dockerfile

1FROM ubuntu:latest 2 3RUN apt-get update && apt-get install -y sudo wget vim curl gawk make gcc 4 5RUN wget https://repo.continuum.io/archive/Anaconda3-2019.03-Linux-x86_64.sh && \ 6 sh Anaconda3-2019.03-Linux-x86_64.sh -b && \ 7 rm -f Anaconda3-2019.03-Linux-x86_64.sh && \ 8 sudo curl -sL https://deb.nodesource.com/setup_10.x | sudo bash - && \ 9 sudo apt-get install -y nodejs 10 11ENV PATH $PATH:/root/anaconda3/bin 12 13RUN pip install --upgrade pip 14RUN pip install pandas_datareader 15RUN pip install mplfinance 16 17RUN wget --quiet http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz -O ta-lib-0.4.0-src.tar.gz && \ 18 tar xvf ta-lib-0.4.0-src.tar.gz && \ 19 cd ta-lib/ && \ 20 ./configure --prefix=/usr && \ 21 make && \ 22 sudo make install && \ 23 cd .. && \ 24 pip install TA-Lib && \ 25 rm -R ta-lib ta-lib-0.4.0-src.tar.gz 26 27RUN mkdir /workspace 28 29CMD ["jupyter-lab", "--ip=0.0.0.0","--port=8888" ,"--no-browser", "--allow-root", "--LabApp.token=''"]

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

DockerコンテナにChromeがインストールされていない事が原因のようですね。

コンテナは、ざっくり説明すると環境を分離させるものです。
ここでは、Windows10のパソコンの中にLinuxの仮想的なパソコンが出来上がっているイメージです。

私の手元の環境では、

  • Dockerfileを書き換える
  • Pythonのコードを書き換える

で動きました。

Dockerfile

Chromeとwebdriverをインストールを追記。

Dockerfile

1FROM ubuntu:latest 2 3RUN apt-get update && apt-get install -y sudo wget vim curl gawk make gcc 4 5RUN wget https://repo.continuum.io/archive/Anaconda3-2019.03-Linux-x86_64.sh && \ 6 sh Anaconda3-2019.03-Linux-x86_64.sh -b && \ 7 rm -f Anaconda3-2019.03-Linux-x86_64.sh && \ 8 sudo curl -sL https://deb.nodesource.com/setup_10.x | sudo bash - && \ 9 sudo apt-get install -y nodejs 10 11ENV PATH $PATH:/root/anaconda3/bin 12 13RUN pip install --upgrade pip 14RUN pip install pandas_datareader 15RUN pip install mplfinance 16 17RUN wget --quiet http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz -O ta-lib-0.4.0-src.tar.gz && \ 18 tar xvf ta-lib-0.4.0-src.tar.gz && \ 19 cd ta-lib/ && \ 20 ./configure --prefix=/usr && \ 21 make && \ 22 sudo make install && \ 23 cd .. && \ 24 pip install TA-Lib && \ 25 rm -R ta-lib ta-lib-0.4.0-src.tar.gz 26 27RUN mkdir /workspace 28 29CMD ["jupyter-lab", "--ip=0.0.0.0","--port=8888" ,"--no-browser", "--allow-root", "--LabApp.token=''"] 30 31# https://stackoverflow.com/questions/58997430/how-to-install-chromium-in-docker-based-on-ubuntu-19-10-and-20-04 32RUN curl -LO https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb && \ 33 env DEBIAN_FRONTEND=noninteractive apt-get install -y ./google-chrome-stable_current_amd64.deb && \ 34 rm google-chrome-stable_current_amd64.deb 35 36# https://qiita.com/pyon_kiti_jp/items/0ba98f140142d4ac6b25 37RUN cd /tmp/ && \ 38 apt-get install -y unzip && \ 39 curl -LO https://chromedriver.storage.googleapis.com/89.0.4389.23/chromedriver_linux64.zip && \ 40 unzip chromedriver_linux64.zip && \ 41 mv chromedriver /usr/local/bin/

Python

webdriverのオプション追加と動作確認。
webdriverのパスはDocerfilePATHの通たところへ置いているので省略。

python

1from selenium import webdriver 2#import time 3#import pandas as pd 4 5options = webdriver.ChromeOptions() 6options.add_argument('--headless') 7options.add_argument("--no-sandbox") 8browser = webdriver.Chrome(options=options) 9 10browser.get('http://google.com') 11print(browser.title) 12browser.quit()

04/06追記

Dockerfileを差分ではなく全量のせました。

投稿2021/04/04 13:46

編集2021/04/05 23:35
yskszk63

総合スコア161

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

penuts_batapi

2021/04/04 14:35

ありがとうございます!早速載せてくれたdocker fileを追記して試してみます! ちなみに同じ様な事が起こっている方はseleniumと似たHTMLの解析ライブラリであるBeautifulSoupを試してみてください!僕の環境はこっちなら使えました!
penuts_batapi

2021/04/05 13:00

コメント失礼します。 dockerfileの追記部分を追加しましたが以下のエラーが出てしまい、イメージ作成が出来なかったみたいです。「executor failed running [/bin/sh -c curl -LO https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb && env DEBIAN_FRONTEND=noninteractive apt-get install -y ./google-chrome-stable_current_amd64.deb && rm google-chrome-stable_current_amd64.deb]: exit code: 100」 もしかすると僕のlinuxOSはubuntuなので、上記のDEBIANと記述されたdockerfileの文と何か関係があるのでしょうか?
yskszk63

2021/04/05 23:44

回答へDockerfileを全量のせました。 エラーはどのようなものが出力されていたでしょうか? Dockerのビルドも`FROM`で指定されたイメージでされるので、同じようにビルドできるはずなのですが。。 もし、全量試していただき、エラーが出るようでしたら、ビルドのオプションに`--no-cache `を付けてみてください。 `docker build --no-cache .` ちなみに私の環境です。 ``` $ cat /etc/os-release |grep -e^NAME= NAME="Arch Linux" $ docker --version Docker version 20.10.5, build 55c4c88966 ``` > 上記のDEBIANと記述 aptはDebian由来のコマンドなので、`DEBIAN_` プレフィックスがつく環境変数をみるのだと思います。
yskszk63

2021/04/06 11:12

> `docker build --no-cache .` --pull オプションを付けて、最新のubuntuイメージを持ってきた方が良いかもしれませんね。 docker build --no-cache --pull .
penuts_batapi

2021/04/07 04:58

ありがたいです!早速試させていただきます!
penuts_batapi

2021/04/09 08:45

ありがとうございます!問題なくgoogleがヘッドレスで開きました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問