Docker + selenium + chromedriverでスクレイピング環境を作る
Dockerで環境作ったら書いてある通りにしても動かなかったから、以下のサイトを参考にDockerファイルを作る。
# google-chrome
RUN wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add && \
echo 'deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main' | tee /etc/apt/sources.list.d/google-chrome.list && \
apt-get update && \
apt-get install -y google-chrome-stable
# ChromeDriver
ADD https://chromedriver.storage.googleapis.com/101.0.4951.41/chromedriver_linux64.zip /opt/chrome/
RUN cd /opt/chrome/ && \
unzip chromedriver_linux64.zip
RUN pip install selenium \
chromedriver-binary
ENV PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/chrome
WebDriverExceptionが出たら以下のサイトを参考にoptionを追加する。
WebDriverException: Message: unknown error: Chrome failed to start: exited abnormally.
(unknown error: DevToolsActivePort file doesn't exist)
(The process started from chrome location /usr/bin/google-chrome is no longer running, so ChromeDriver is assuming that Chrome has crashed.)
追加したオプション
options.add_argument('--headless')
options.add_argument("--no-sandbox")
【Python】ChromeDriverのエラーまとめ【selenium】
もし次のエラーが出た場合はオプションを増やす。
selenium.common.exceptions.WebDriverException: Message: unknown error: session deleted because of page crash
追加したオプション
options.add_argument("--disable-dev-shm-usage")
困ったらググって解決してるけど、なんでそうしないといけないかよく分かっていない…
コメント
コメントを投稿