PythonでChromeDriverManagerが使えなくなってしまった

Python

Pythonでseleniumを使い、スクレイピングをしようとしたところ過去とコードやモジュール環境を変えていないにも関わらず動作しなかった。

とりあえずエラー文を貼っつけておきます。

Traceback (most recent call last):
  File "C:\PathToFile\tool.py", line 22, in __init__
    self.driver = webdriver.Chrome(ChromeDriverManager().install())
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\PathToPython\Python\Python311\Lib\site-packages\webdriver_manager\chrome.py", line 39, in install
    driver_path = self._get_driver_path(self.driver)
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\PathToPython\Python\Python311\Lib\site-packages\webdriver_manager\core\manager.py", line 30, in _get_driver_path
    file = self._download_manager.download_file(driver.get_driver_download_url())
                                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\PathToPython\Python\Python311\Lib\site-packages\webdriver_manager\drivers\chrome.py", line 40, in get_driver_download_url        
    driver_version_to_download = self.get_driver_version_to_download()
                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\PathToPython\Python\Python311\Lib\site-packages\webdriver_manager\core\driver.py", line 51, in get_driver_version_to_download    
    self._driver_to_download_version = self._version if self._version not in (None, "latest") else self.get_latest_release_version()
                                                                                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\PathToPython\Python\Python311\Lib\site-packages\webdriver_manager\drivers\chrome.py", line 62, in get_latest_release_version
    resp = self._http_client.get(url=latest_release_url)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\PathToPython\Python\Python311\Lib\site-packages\webdriver_manager\core\http.py", line 37, in get
    self.validate_response(resp)
  File "C:\PathToPython\Python\Python311\Lib\site-packages\webdriver_manager\core\http.py", line 16, in validate_response
    raise ValueError(f"There is no such driver by url {resp.url}")
ValueError: There is no such driver by url https://chromedriver.storage.googleapis.com/LATEST_RELEASE_118.0.5993

読んだところ、本来ChromeDriverがダウンロードできたURLから自動で最新のChromeDriverがダウンロードできなくなっている様子。

そのため別の方法でChromeDriverをダウンロードしなければいけなくなってしまいました。

どうやらseleniumをアップデートするとDriverManagerが付属するようになったらしいのでseleniumをアップデートしてみた。

C:\>python -m pip install --upgrade selenium
Requirement already satisfied: selenium in c:\PathToPython\python\python311\lib\site-packages (4.8.0)
...(省略)
Successfully installed selenium-4.14.0

seleniumを4.8.0から4.14.0にアップデートしました。約8ヶ月ほどアップデートを放置していたようです。

Pythonのコードをちょこっと書き換えます。

self.driver = webdriver.Chrome(ChromeDriverManager().install())

コード中の上記の部分を

self.driver = webdriver.Chrome()

に書き換えます。

これだけです。

seleniumにデフォルトでDriverManagerがついてくることでfrom selenium import webdriverだけで良くなり、大幅に記述が簡単になりました。嬉しいですね。