Chrome<var.103>Seleniumのエラー対処

はじめに

最近スクレイピングを回していることが多いのですが、謎のエラーによく阻まれていたのですが、これがchrome側の問題であることを知ったので共有&まとめをします。

自分の環境では以下のようなエラーが頻発していました。

  File "/Users/***/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 437, in get
    self.execute(Command.GET, {'url': url})
  File "/Users/***/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py", line 425, in execute
    self.error_handler.check_response(response)
  File "/Users/***/lib/python3.8/site-packages/selenium/webdriver/remote/errorhandler.py", line 247, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: cannot determine loading status
from unknown error: unexpected command response
  (Session info: chrome=103.0.5060.114)

頻発といっても、20分30分程度なら問題なく動く場合もあったので、例外処理等で適当に対応していたため、調べるのが遅くなりましたね。。

原因

原因と言っても、chrome側に問題があるそうなので、根本的な対処をするのは難しいです。

そこで考えられるのは以下二つの選択肢です。

・chromeのダウングレード

chromeのアップグレード(Beta)

この記事では、アップグレード。つまりベータ版をダウンロードしてそちらにパスを通すことをお勧めします。

理由は複数ありますが、ダウングレード自体がそもそもめんどくさい。Beta版は普通のバージョンと共存できる。というのが自分的には大きな理由です。

対応

まずはベータ版のダウンロードを行いましょう!!

https://www.google.com/intl/ja/chrome/beta/

次にバージョンを合わせたchrome driverをインストールします。

https://chromedriver.chromium.org/downloads

Seleniumで呼び出すときのパスを設定してあげる。

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options 

options = Options()
options.binary_location = '/Applications/Google Chrome Beta.app/Contents/MacOS/Google Chrome Beta'
driver = webdriver.Chrome(service=Service('./chromedriver-bata'), options=options)

修正箇所は以上です、後は今まで通りのコードで動作すると思います!

このくらいならさっさと対処しておけばよかった。。

おすすめの記事