Webスクレイピングを行う際にSeleniumを使用することが多くあるが、その際にwebdriver_managerというモジュールを使用しています。2024年7月末頃からプログラム実行時にOSErrorが発生するようになりました。
Seleniumを使用し、実行ファイルとして納品しているものはすべてこのwebdriver_managerを使用していることからお客様から動作しなくなったと連絡を多数受けるようになりました。
その時の回避方法を共有できればと思います。
webdriver_managerとは
webdriver_managerはSeleniumのWebdriverのバージョン管理と自動ダウンロードを行うためのPythonパッケージです。通常、Seleniumを使う際には、各ブラウザに対応したWebDriver(例えば、Google Chromeならchromedriver)を手動でダウンロードし、適切なパスに配置する必要があります。しかし、この作業は手間がかかり、Google Chromeがアップデートされるたびにchromedriverをダウンロードし、配置する必要があります。
webdriver_managerを使用することでこの作業を自動化することができます。
私もはじめはwebdriver_managerの存在を知らず、毎度面倒な作業を行っており、webdriver_managerを知ったときは衝撃を受けた記憶があります。
以下のようなコードを書くことでdriver起動時にwebdriver_managerが機能します。
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))OSError回避方法
冒頭でも記載したように2024年7月末頃から以下のエラーが発生するようになりました。
OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません。回避方法は簡単な話でした。
webdriver_managerを使わない。
なんだそれと思うかもしれませんが、Selenium 4.11.0からそもそもWebDriverを自動更新するようになったみたいです。それにより今後は以下のコードで良いみたいです。
from selenium import webdriver
driver = webdriver.Chrome()

コメント