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")

Pythonでselenium.common.exceptions.WebDriverException: Message: unknown error: session deleted because of page crashがでたとき

困ったらググって解決してるけど、なんでそうしないといけないかよく分かっていない…



コメント

このブログの人気の投稿

FLEXISPOT昇降デスクでASR(A5R)が表示されたら下限まで下げてから下ボタンを長押しすると直る

FLEXISPOT昇降デスクで異音がしたらコントロールボックスを交換してくれた

Obsidian Memosをもっと手軽にしたいからiPhoneのショートカットを作った