こんにちは、ミナピピン(@python_mllover)です!
今回は案件で作成したseleniumのコードが使用しているwebdriverのchromeがバージョン更新で定期的に使えなくなるエラーについて相談を受けたので自動でバージョン更新して安定して動作するように調査した結果をまとめておこうと思います。
webdriver-managerを使えば更新の自動化は可能
結論からいくと「webdriver-manager」というライブラリを使用することで常にSeleniumで使用するGoogleChromeのWebdriverのバージョンを最新版にすることが可能みたいです。まずは必要なライブラリをPIPでインストールします
# ライブラリをインストールする $ pip install webdriver-manager $ pip install selenium $ pip install --upgrade chromedriver_binary
これで自動的に最新のWebドライバーをインストールしてくれるようになりますが、このままだとPATHがないとかいうエラーが発生するので、ドライバーのバイナリファイルも最新に合わせてあげる必要があります。
Seleniumのサンプルコードを実行する
最終的には以下のようなコードになりました。
webdriver-managerでドライバーは常に最新のものを使用できますが、それとバイナリのバージョンが違うとエラーになるためSubprocessを使用してバイナリのバージョンも常に最新になるようにしました。
<サンプルコード>
import subprocess from selenium import webdriver from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.common.desired_capabilities import DesiredCapabilities import chromedriver_binary cmd = 'pip install --upgrade chromedriver_binary' res = subprocess.call(cmd, shell=True) url = 'https://www.mgstage.com/' d = DesiredCapabilities.CHROME d['goog:loggingPrefs'] = { 'performance': 'ALL' } driver = webdriver.Chrome(ChromeDriverManager().install(),desired_capabilities=d) driver.set_window_size('1200','1000') driver.get(url)
これでコマンドラインなどでドライバーのバージョンを更新することなく、PYファイルのみで最新の状態を維持してスクレイピングを行うことが可能になります。
コメント
[…] 関連記事:【Python】Seleniumで使用するWebDriverの更新を自動化してコードの挙動を安定させる […]
[…] 関連記事:SeleniumのChromeDriverの更新・バージョン管理を自動化する方法 […]
[…] 関連記事:SeleniumのChromeDriverの更新・バージョン管理を自動化する方法 […]