はじめに
seleniumを使っているとブラウザドライバーの設定が結構めんどくさく感じている方もいると思うので、自動でブラウザのバージョンにあったドライバーを取得してくれるライブラリをご紹介します。
webdriver-manager
使い方はとても簡単です。
pip install webdriver-manager
# seleniumをインストールしていない人は以下も
# pip install selenium
複数のブラウザドライバーをサポートしています。
from selenium import webdriver
# Chromeを使う場合
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
# Chromiumを使う場合
from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.utils import ChromeType
driver = webdriver.Chrome(ChromeDriverManager(chrome_type=ChromeType.CHROMIUM).install())
# Firefoxを使う場合
from webdriver_manager.firefox import GeckoDriverManager
driver = webdriver.Firefox(executable_path=GeckoDriverManager().install())
# IEを使う場合
from webdriver_manager.microsoft import IEDriverManager
driver = webdriver.Ie(IEDriverManager().install())
# Edgeを使う場合
from webdriver_manager.microsoft import EdgeChromiumDriverManager
driver = webdriver.Edge(EdgeChromiumDriverManager().install())
# Operaを使う場合
from webdriver_manager.opera import OperaDriverManager
driver = webdriver.Opera(executable_path=OperaDriverManager().install())
# Opera browserが「C:/Program Files」あるいは「C:/Program Files (x86)」以外にインストールされている場合
from webdriver_manager.opera import OperaDriverManager
options = webdriver.ChromeOptions()
options.add_argument('allow-elevated-browser')
options.binary_location = "C:\\Users\\USERNAME\\FOLDERLOCATION\\Opera\\VERSION\\opera.exe"
driver = webdriver.Opera(executable_path=OperaDriverManager().install(), options=options)
設定
GH_TOKEN
webdriver_managerはいくつかのドライバを公式のGithubリポジトリからダウンロードしているのですが、非認証ユーザーに対しては1時間に60リクエストまでといった制限がかかります。認証するために環境変数にgithub tokenを設定しておくことができます。
$ export GH_TOKEN = your_access_token
あるいは
import os
os.environ['GH_TOKEN'] = your_access_token
WDM_LOG_LEVEL
webdriver_managerを使って実行するとコンソール上にwebdriverのダウンロードに関するログが出力されるのですが、出力を目障りな場合は出力されないようにします。
import os
os.environ['WDM_LOG_LEVEL'] = '0'
あるいは
ChromeDriverManager(log_level=0).install()
WDM_PRINT_FIRST_LINE
webdriver_managerを使って実行するとコンソールの1行目にデフォルトで空行が入りますが、目障りな場合は消すことができます。
import os
os.environ['WDM_PRINT_FIRST_LINE'] = 'False'
あるいは
ChromeDriverManager(print_first_line=False).install()
cache_valid_range
ドライバのcacheの有効期間はデフォルトで1日ですが、このパラメータを変更することができます。
ChromeDriverManager(cache_valid_range=2).install()
参考
まとめ
以前までchromedriver_binaryを使用していたので、定期的にバージョンを手動で更新しなくてはなりませんでしたが、これがあると結構楽になりそうですね。