【python】自動でchrome webdriverバージョンを更新する方法(seleniumスクレイピング)

本ページには PR が含まれます。

スクレイピングのツールを作ったけど
ChromeDriverのバージョンが変わって動かない…。

今回はseleniumスクレイピングで使用するChromeDriverのバージョンを自動更新できるライブラリの使い方をご紹介します。


サンプルコードを見ながらサクサク処理を試せるので、ぜひ参考にしてみてください。

seleniumスクレイピングのくわしい使い方はこちら


Pythonの実践的なWebスクレイピング技術について学びたいという方に向けてUdemy学習コースを公開しています。

10/27(金)までの 90%OFFクーポンで Webスクレイピングを学べる!!

30日間返金保証

すぐにでもスクレイピング技術を活かせるようになりますよ!


目次

seleniumスクレイピングでのChromeDriverバージョンエラー

古いバージョンのChromeDriverを使ってスクレイピングを実行しようとすると、以下のようなエラー文が出てしまいます。

---------------------------------------------------------------------------
SessionNotCreatedException     Traceback (most recent call last)
~~~~~~~~~~中略~~~~~~~~~~
This version of ChromeDriver only supports Chrome version 95
Current browser versionis 109.0.5414.119 with binary path /Applications/Google Chrome.app/Contents

上記の例はver. 95のChromeDriverでver. 109のchromeを操作しようとしてエラーとなっています。


こうしたバージョンエラーを回避できるwebdriver-managerライブラリがあるんです!


ライブラリのインストール

まずはwebdriver-managerライブラリをインストールしましょう。

コマンドプロンプト(Windows)もしくはターミナル(macOS)で以下を実行します。

pip install webdriver-manager
pip install selenium

最後の行に「Successfully Installed ~~~」と表示されていればインストールは成功です。


似たようなライブラリで「webdriver_manager」と_(アンダースコア)のものがあるので注意!
まったく別のライブラリです。

webdriver-managerライブラリの使い方

従来のドライバー設定と比較しながら、webdriver-managerライブラリの使い方を確認しましょう。

(PyPI公式 : https://pypi.org/project/webdriver-manager/)

従来のドライバー設定方法

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

driver_path = "~~~Chromeドライバーをダウンロードした先のパス~~~/chromedriver"
driver = webdriver.Chrome(service=Service(executable_path=driver_path))

このように手動でダウンロードしたchromedriverのパスを文字列で指定していましたが、

webdriver-managerライブラリでは文字列での指定は不要になります。


webdriver-managerライブラリを使ったドライバー設定方法

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
# ↓この行を追加(ここではwebdriverとmanagerの間はアンダースコアであることに注意。ややこしいですが...。)
from webdriver_manager.chrome import ChromeDriverManager

# 自動で最新バージョンをダウンロードしてパス名を返してくれる。
driver_path = ChromeDriverManager().install()
driver = webdriver.Chrome(service=Service(executable_path=driver_path))

これだけでプログラム実行時に自動で最新バージョンのChromeDriverを使えるようになります!


プログラム自体も大きく変更する必要がないので、ぜひwebdriver-managerライブラリを使ってみてください。

すでに最新バージョンがインストール済みの際はキャッシュを利用してくれて
ダウンロードの処理は自動でスキップしてくれます。


実際にプログラムを実行した際の出力を確認しておきます。

====== WebDriver manager ======
Current google-chrome version is 109.0.5414
Get LATEST chromedriver version for 109.0.5414 google-chrome
There is no [mac64] chromedriver for browser  in cache
Trying to download new driver from https://chromedriver.storage.googleapis.com/109.0.5414.74/chromedriver_mac64.zip
Driver has been saved in cache [/Users/~~~あなたのPCユーザ名~~~/.wdm/drivers/chromedriver/mac64/109.0.5414.74]

プログラムを実行するたびに現在のバージョンも出力してくれます!

chromedriverのダウンロード先のフォルダ
自動でダウンロードされたchromedriverはローカルPCに保存されています

まとめ

本記事ではseleniumスクレイピングで使用するChromeDriverのバージョンを自動更新できるライブラリの使い方をご紹介しました。


ChromeDriverのバージョン管理に困っていたという方はぜひ活用してみてくださいね。

よかったらシェアしてね!
目次