Python プログラミング

【Python】Seleniumで使用するWebDriverの更新を自動化してコードの挙動を安定させる

この記事は約3分で読めます。

 

こんにちは、ミナピピン(@python_mllover)です!

 

今回は案件で作成したseleniumのコードがdriverの更新で使えなくなったと相談を受けたので自動でバージョン更新して安定して動作するように調査した結果をまとめておこうと思います。

 

webdriver-managerを使えば更新の自動化は可能

 

結論からいくとwebdriver-managerというライブラリを使用することで常にWebdriverのバージョンを最新にすることが可能みたいです。

 

# ライブラリをインストールする
$ pip install webdriver-manager

 

これで自動的に最新のドライバーをインストールしてくれるようになりますが、このままだとPATHがないとかいうエラーが発生するので、ドライバーのバイナリファイルも最新に合わせてあげる必要があります。

 

参照:https://tkstock.site/2022/05/31/%e3%80%90python%e3%80%91selenium%e3%81%a7chromedriver%e3%81%aepath%e3%82%a8%e3%83%a9%e3%83%bc%e3%81%8c%e5%87%ba%e3%81%9f%e6%99%82%e3%81%ae%e5%af%be%e5%87%a6%e6%b3%95/

 

 

# ライブラリをインストールする
$ pip install --upgrade chromedriver_binary

 

 

スポンサーリンク
スポンサーリンク

コードを実行する

 

最終的には以下のようなコードになりました。

 

webdriver-managerでドライバーは常に最新のものを使用できますが、それとバイナリのバージョンが違うとエラーになるためSubprocessを使用してバイナリのバージョンも常に最新になるようにしました。

 

これでコマンドラインなどでドライバーのバージョンを更新することなく、PYファイルのみで最新の状態を維持してスクレイピングを行うことが可能になります。

 

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) 
driver = webdriver.Chrome(ChromeDriverManager().install()) 
driver.set_window_size('1200','1000') 
url = 'https://www.mgstage.com/' 
d = DesiredCapabilities.CHROME 
d['goog:loggingPrefs'] = { 'performance': 'ALL' }
driver = webdriver.Chrome(desired_capabilities=d) 
driver.get(url)

 

 

 

コメント

タイトルとURLをコピーしました