Seleniumでスクレイピング、RPA化などを行っていると、時々ブラウザのバージョンとドライバーのバージョンがあっていないということでエラーが出ることがあります。
その都度、手動でブラウザのドライバーのアップデートを行います。
これが結構面倒なので、自動でアップデートできないかということになります。
今回ここで説明するのは、ブラウザのドライバーの自動アップデートの方法です。
目次
ブラウザのドライバーの自動アップデートを行う方法の1つはWebdriver managerによる方法です。
1.Webdriver Managerのインストール
まずはじめに、Webdriver Managerをインストールします。
pipを使用し、以下のコマンドにてインストールします。
pip install webdriver-manager
次に、対象となるプログラムにコード追加します。
2.プログラムへのコード追加変更
1.1.Edgeの場合
はじめに、先頭に以下のimport文を追加します。
from webdriver_manager.microsoft import EdgeChromiumDriverManager
続いて、ドライバーの設定箇所を以下のように置き換えます。
custom_path=”C:\\XXX\\YYY\\ZZZ″ driver_path=EdgeChromiumDriverManager(path=custom_path).install()
driver= webdriver.Edge(driver_path)
ここで、custom_path=”C:\\XXX\\YYY\\ZZZ″でドライバーインストール用のパスを設定します。
このように記載して実行すると、このディレクトリの下に、「.wdm」ディレクトリが作成されます。さらにその中のディレクトリをいくつか入っていった先にEdge用のドライバーmsedgedriver.exeがインストールされます。
自分の場合は、プログラムが入っている同じディレクトリを指定したため、以下のようなコードにしています。
custom_path=os.getcwd() driver_path=EdgeChromiumDriverManager(path=custom_path).install() driver = webdriver.Edge(driver_path)
1行目のos.getcwd()でカレントディレクトリを指定しています。
これを使用する場合は、import文として先頭に、
import os
を記載しておく必要があります。
同様に、Chromeの場合は以下のようになります。
1.2.Chromeの場合
先頭に以下のimport文を追加します。
from webdriver_manager.chrome import ChromeDriverManager
続いて、ドライバーの設定箇所を以下のように置き換えます。
custom_path=”C:\\XXX\\YYY\\ZZZ″ driver_path = ChromeDriverManager(path=custom_path).install()
driver = webdriver.Chrome(driver_path)
ここで、custom_path=”C:\\XXX\\YYY\\ZZZ″でドライバーインストール用のパスを設定します。
このように記載して実行すると、このディレクトリの下に、「.wdm」ディレクトリが作成されます。さらにその中でディレクトリ分けされた1つにChrome用のドライバーがインストールされます。
自分の場合は、プログラムが入っている同じディレクトリを指定したため、以下のようなコードにしています。
custom_path=os.getcwd() driver_path = ChromeDriverManager(path=custom_path).install()
driver = webdriver.Chrome(driver_path)
1行目のos.getcwd()でカレントディレクトリを指定しています。
これを使用する場合は、import文として先頭に、
import os
を記載しておく必要があります。
1.3.I.E.の場合
EdgeのI.E.モードが必要な場合にはI.E.用のドライバーのインストールが必要になります。
その場合には、Edge、Chromeと同様ですがはじめに以下のimport文を追加します。
from webdriver_manager.microsoft import IEDriverManager
続いて、ドライバーの設定箇所を以下のように置き換えます。
「EdgeのI.E.モード用の設定」とも絡むのでその内容と「拡大率設定チェックと保護モードチェックしない設定」が元々入っています。
ドライバーのパス設定:”C:\\XXX\\YYY\\ZZZ″の場合
ieOptions = webdriver.IeOptions() ieOptions.add_additional_option("ie.edgechromium", True) ########拡大率設定チェックと保護モードチェックしない設定######## ieOptions.ignore_zoom_level = True ieOptions.ignore_protected_mode_settings = True ############################################################ ieOptions.add_additional_option("ie.edgepath",'C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe')
custom_path=”C:\\XXX\\YYY\\ZZZ″
driver_path = IEDriverManager(path=custom_path).install()
# ドライバー指定でEdgeブラウザを開く ie_service = fs.Service(executable_path=driver_path) driver = webdriver.Ie(service=ie_service, options=ieOptions)
自分の場合は、以下のようにしています。
ドライバーのパス設定:プロジェクトのディレクトリの場合
ieOptions = webdriver.IeOptions() ieOptions.add_additional_option("ie.edgechromium", True) ########拡大率設定チェックと保護モードチェックしない設定######## ieOptions.ignore_zoom_level = True ieOptions.ignore_protected_mode_settings = True ############################################################ ieOptions.add_additional_option("ie.edgepath",'C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe')
custom_path= os.getcwd()
driver_path = IEDriverManager(path=custom_path).install()
# ドライバー指定でEdgeブラウザを開く ie_service = fs.Service(executable_path=driver_path) driver = webdriver.Ie(service=ie_service, options=ieOptions)
このように記載して実行すると、このディレクトリの下に、「.wdm」ディレクトリが作成されます。さらにその中でディレクトリ分けされた1つにI.E.用のドライバーIEDriverServer.exeがインストールされます。
os.getcwd()でカレントディレクトリを指定したり、 fs.Serviceなどがあったりしますので、これらを使用する場合は、import文として先頭に、
import os
import fs
を記載しておく必要があります。
以上が各ブラウザ用のドライバーを自動アップデートする方法になります。
また、PythonにてSeleniumを活用してスクレイピング、RPA化などを行っていく場合に必要となりそうな内容の記事を一覧として以下にまとめましたのでよかったらご参照ください。
関連記事:
【Python】キーボード、キー入力判定方法 - Django Girls and Boys 備忘録
【Python】keyboardライブラリでのキー入力検出に使用可能なキーの種類 - Django Girls and Boys 備忘録
【Python Selenium】各ブラウザ用のドライバーを自動アップデートする方法 - Django Girls and Boys 備忘録
【Python Selenium】Pythonで行うproxy環境設定方法 - Django Girls and Boys 備忘録
【PythonからWeb操作】seleniumのインストール手順 - Django Girls and Boys 備忘録
【PythonによるExcelファイルの読み書き】PythonのダウンロードからExcelファイルの読み書きまでの一通りすべての方法 - Django Girls and Boys 備忘録
【Python】スライスによる範囲指定などスライスの使用方法 - Django Girls and Boys 備忘録
【Python】range、break、continue、スライスによる範囲指定などfor文の基本的な使用方法 - Django Girls and Boys 備忘録
【Python Selenium】ActionChainsによるキーの同時押し、連続操作などの使用方法 - Django Girls and Boys 備忘録
【Python】「文字列として受け取ったリスト」をリストに復元した時の対処方法、変換方法 - Django Girls and Boys 備忘録
【Python】ソースコードにコメントをつける方法(コメント化) - Django Girls and Boys 備忘録
【PythonでのExcelファイル読み書き方法】ファイルオープンしているファイル(アクティブファイル)への書込方法 - Django Girls and Boys 備忘録
【Python Selenium】Webサイトのスクレイピングなどで必要なフレーム間移動方法 - Django Girls and Boys 備忘録
【Python Selenium】ブラウザ用ドライバーのダウンロードとインストール方法 - Django Girls and Boys 備忘録
【PythonからWeb操作】selenium、各ブラウザ用ドライバーの最新バージョン確認、ダウンロード場所 - Django Girls and Boys 備忘録
【Python Selenium】新規ウインドウ追加時のウインドウ切替方法 - Django Girls and Boys 備忘録
【Python Selenium】ウインドウ表示時などでのWaitの方法、待機方法 - Django Girls and Boys 備忘録
【Python Selenium】新規ウインドウ(新規タブ)追加時のウインドウ切替方法(追加ハンドルをハンドル差異比較にて取得) - Django Girls and Boys 備忘録
【python】実行時に表示されるコンソールウインドウを非表示にする方法 - Django Girls and Boys 備忘録
【Python Selenium】Webサイトのソースコードをファイル保存する方法 - Django Girls and Boys 備忘録
【Python】キー入力によるプログラム終了処理、ループを抜けて次の処理へ移行する処理 - Django Girls and Boys 備忘録
【Python Excel】ExcelからのPython実行ファイル(アプリケーションファイル)起動方法 - Django Girls and Boys 備忘録
【Python】ログイン中のユーザ名を取得する方法 - Django Girls and Boys 備忘録
【Python Selenium】クローリング、スクレイピングにて対象ウインドウのソースコードを調べる方法 - Django Girls and Boys 備忘録
【Python Selenium】ウインドウのURLを指定して画面展開する方法と現在表示されているウインドウのURLとタイトルを取得する方法 - Django Girls and Boys 備忘録
【Python Selenium】ウインドウハンドル取得方法 - Django Girls and Boys 備忘録
【Python Selenium】ウインドウ内の要素取得、キーボード入力などする方法(name属性、id属性、class属性) - Django Girls and Boys 備忘録
【Python Selenium 要素取得】ウインドウハンドル取得方法(Chrome用) - Django Girls and Boys 備忘録
【Python Selenium】ウインドウ内の要素取得、キーボード入力などする方法(name属性、id属性、class属性)(Chrome用) - Django Girls and Boys 備忘録
【Python Selenium】f文字列(フォーマット文字列)、r文字列(raw文字列)について - Django Girls and Boys 備忘録
【Python】エスケープシーケンス(エスケープ文字)について - Django Girls and Boys 備忘録