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のバージョンに書き換わりました。ただ、あまりおすすめできる方法ではないと思うので、上記のようにちゃんと手順を踏んでやることをおすすめします。
参考になった場合は以下のボタンをポチッとしておいていただけるとうれしいです。


参考
参考用のメモとして、ChromeDriverのバージョン確認方法を載せておきます。
$ chromedriver -v
ChromeDriverダウンロードページ:http://chromedriver.chromium.org/downloads