【Ubuntu】Seleniumでheadless chromeを使う時に発生するエラー

スクレイピング
この記事は約6分で読めます。

ChromeDriverがChrome version75しかサポートしていない

そもそもやろうとしたことは、以下のページを参考にseleniumを使って、webスクレイピングをしようとしました。

ページに従って、以下のコードを実行。

from selenium import webdriver
import chromedriver_binary

#---headless mode-----------------------------
options = webdriver.ChromeOptions()
#---headlessで動かすために必要なオプション---
options.add_argument("--headless")
options.add_argument("--disable-gpu")
options.add_argument("--window-size=1280x1696")
options.add_argument("--disable-application-cache")
options.add_argument("--disable-infobars")
options.add_argument("--no-sandbox")
options.add_argument("--hide-scrollbars")
options.add_argument("--enable-logging")
options.add_argument("--log-level=0")
options.add_argument("--single-process")
options.add_argument("--ignore-certificate-errors")
options.add_argument("--homedir=/tmp")
driver = webdriver.Chrome(options=options)

すると現在のバージョンのChromeDriverがChrome Version75しかサポートしていないと怒られてしまいました。

SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version 75

Google Chromeのバージョン確認

まず現在のChromeのバージョンを確認します。

$ google-chrome --version
>> Google Chrome 74.0.3729.157

Google Chromeアンインストール

Goolgle chromeのバージョンを75にあげることにします。まずは、一旦アンイストールして、インストールし直します。バージョン確認したらなくなっていることがわかります。

$ sudo apt-get remove google-chrome-stable
$ google-chrome --version
>> bash: /usr/bin/google-chrome: No such file or directory

参照ページ:AskUbuntu: How to uninstall Google Chrome

Google Chrome再インストール

最後にGoogle Chromeのバージョン75をインストール。以下の公式っぽいページを参照しました。現時点では、バージョン75はbeta版ということで、beta版をインストールします。

$ wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - 
$ sudo sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
$ sudo apt-get update
$ sudo apt-get install google-chrome-beta
$ google-chrome --version
>> Google Chrome 75.0.3770.38 beta

参照ページ:3rd Party Repository: Google Chrome

再度、seleniumのコードを実行して、エラーがでなければ無事解決です。

ハマりポイント

  • google chrome stableをちゃんとアンインストールすること
  • google chrome betaもちゃんとアンインストールすること
  • ChromeDriver側は問題はないので、そちらを変えようとしないこと
  • selenium側にも問題はないので、そちらを変えようとしないこと

ちゃんと現在のGoogle Chrome(stable, beta両方とも)をアンインストールして、バージョン75のChromeをインストールし直せばすんなりと解決します。

私は、最初見つけたサイトでChromeDriverとGoogle Chromeのバージョンをあわせるというような内容のものがあったため、ChromeDriverのバージョンをいじったりしたのでかなりハマりました。

あと、stableをアンインストールせずにbeta版をインストールしようとしたので、バージョンがアップされず困りました。

ちなみに

調べていてわかったのですが、以下のコマンドでgoogle-chromeの場所を調べると私の場合、同じ場所にgoogle-chrome, google-chrome-stable, google-chrome betaの3ファイルが存在していました。

$ which google-chrome
>> /usr/bin/google-chrome

最初にgoogle-chromeをはじめてインストールすると、インストールしたpackageの名前のファイル(betaであればgoogle-chrome-beta)とgoogle-chromeのファイルができます。アンインストールせずにインストールするとpackage名のファイルはできるのですが、google-chromeは最初に入れた方のバージョンになっており、反映されません。ここで、アンインストールせずにgoogle-chrome-betaファイルをgoogle-chromeに名前を変えて、google-chrome-stableで作成されたgoogle-chromeを上書きすると、実はgoogle-chrome-betaのバージョンに書き換わりました。ただ、あまりおすすめできる方法ではないと思うので、上記のようにちゃんと手順を踏んでやることをおすすめします。
参考になった場合は以下のボタンをポチッとしておいていただけるとうれしいです。

 にほんブログ村 IT技術ブログへ

参考

参考用のメモとして、ChromeDriverのバージョン確認方法を載せておきます。

$ chromedriver -v

ChromeDriverダウンロードページ:http://chromedriver.chromium.org/downloads

タイトルとURLをコピーしました