chrome でも同じようなのを書いたのですが、ほぼ一緒です。
d:\bin に win64 版の msedgedriver.exe をおいて使う設定です。
アプリケーションフォルダにバージョンに合わせたディレクトリが作られ、実行中だと新しいバージョンのディレクトリも作られるため、リストで一番小さいものを取る形にしています。
import os import re import urllib.request import zipfile import subprocess def edge_driver_auto_update(edgedriver_path=r'd:\bin'): pattern = r'\d+\.\d+\.\d+\.\d+' dirs =[] for d in os.listdir(r'C:\Program Files (x86)\Microsoft\Edge\Application'): matched = re.search(pattern, d) if matched: dirs.append(matched[0]) version = min(dirs) cmd2 = rf'{os.path.join(edgedriver_path,"msedgedriver.exe")} -version' stdout2 = subprocess.check_output(cmd2) if version != stdout2.split()[3].decode('utf-8'): url = f"https://msedgedriver.azureedge.net/{version}/edgedriver_win64.zip" urllib.request.urlretrieve(url, "edgedriver_win64.zip") with zipfile.ZipFile("edgedriver_win64.zip") as zipF: zipF.extractall(edgedriver_path) print("edge driver updated") os.remove("edgedriver_win64.zip")
chrome と違ってバーション番号が最後まで一致するドライバを使うのと、マイクロソフトらしい見栄えのするダウンロードサイトが新鮮。
令和6年1月24日 一部修正