#PythonでWebDriverのインストールを補助するモジュールまとめ
Seleniumなどでスクレイピングする際、WebDriverのバージョンが異なると動かなかないことがあったりするので、勝手にバージョン合わせてくれるモジュールないかなと探してまとめました。
5/27/2022 追記 現在はDocker imageを使ったほうが無難です。Docker CLIは現在も無料で使用することができるので可能ならそちらを使いましょう。
Chrome用
chromedriver-autoinstaller
- ライセンス:MIT
- 対応OS:Widows/Mac/Linux
インストール方法
pip install chromedriver-autoinstaller
使い方
以下を実行するコードに追加
from selenium import webdriver
import chromedriver_autoinstaller
chromedriver_autoinstaller.install()
説明
適切なバージョンのchromedriverが存在するか確認して存在しないならバージョンがあっているものをインストール
def install(cwd=False):
"""
Appends the directory of the chromedriver binary file to PATH.
:param cwd: Flag indicating whether to download to current working directory
:return: The file path of chromedriver
"""
def get_chrome_version():
"""
Get installed version of chrome on client
:return: The version of chrome
"""
chromedriver-py
自動で最新のchromedriverバイナリバージョンをダウンロードしてインストールするらしい
- ライセンス:MIT
- 対応OS:Windows/Linux/macOS
インストール方法
pip install chromedriver-py
使い方
from chromedriver_py import binary_path
を追加するとbinary_path
にChrome driverのパスが代入される
自動で最新版にアップデートされるらしい
from selenium import webdriver
from chromedriver_py import binary_path # this will get you the path variable
driver = webdriver.Chrome(executable_path=binary_path)
driver.get("http://www.python.org")
assert "Python" in driver.title
ChromeDriver Installer for Python
なんか読んでて使いにくそうなので省略
インストール
pip install chromedriver_installer \
--install-option="--chromedriver-version=2.10"
こんな感じでドライバーをインストールしてpathを通す機能シンプルなもの
Firefox
geckodriver-autoinstaller
自動でgeckodriverをインストールしてくれるスクリプト
- ライセンス:MIT
- 対応OS Windows/Linux/macOS
インストール
pip install geckodriver-autoinstaller
使い方
import geckodriver_autoinstaller
を使いたいコードに追加しgeckodriver_autoinstaller.install()
を追加
from selenium import webdriver
import geckodriver_autoinstaller
geckodriver_autoinstaller.install()
# Check if the current version of geckodriver exists
# and if it doesn't exist, download it automatically,
# then add geckodriver to path
driver = webdriver.Firefox()
driver.get("http://www.python.org")
assert "Python" in driver.title
説明
適切なバージョンのgeckodriverが存在するか確認して存在しないならバージョンがあっているものをインストール
def install(cwd=False):
"""
Appends the directory of the geckodriver binary file to PATH.
:param cwd: Flag indicating whether to download to current working directory
:return: The file path of geckodriver
"""
def get_firefox_version():
"""
Get installed version of chrome on client
:return: The version of chrome
"""
pygeckodriver
1時間ごとに自動でgeckodriverの更新があるかチェックしあったらインストールしてくれるスクリプト
- ライセンス:Apache-2.0
- 対応OS:windows/Mac/linux
インストール
pip install pygeckodriver
使いかた
pygeckodriver import geckodriver_path
を追加するとgeckodriver_path
にgeckodriverのパスが入る
from selenium import webdriver
from pygeckodriver import geckodriver_path
bs = webdriver.Firefox(executable_path=geckodriver_path)
bs.get('https://www.pypi.org')
総合
Pyderman
- ライセンス:MIT
- 対応OS:Windows/Linux/macOS
- Python 3.5以上
- 対応ブラウザ
Google Chrome (chromeDriver)
Firefox (geckoDriver)
PhantomJS
Opera (operaDriver)
Edge (edgeDriver)
インストール
pip install pyderman
使い方(Firefox)
import pyderman as driver
# FIrefoxのドライバーをインストール
path = driver.install(browser=driver.firefox)
print('インストールされた geckodriver driver のパスは: %s' % path)
説明
指定されたブラウザのドライバをダウンロードし、保存先のパスを返す
def install(browser=None, file_directory='./lib/', verbose=True, chmod=True, overwrite=False, version='latest', filename=None, return_info=False):
"""
Downloads the given browser driver, and returns the path it was saved to.
:param browser: The Driver to download. Pass as `pyderman.chrome/firefox`. Default Chrome.
:param file_directory: The directory to save the driver.
:param verbose: If printouts are okay during downloading.
:param chmod: If True, attempt to make the downloaded driver executable.
:param overwrite: If true, overwrite existing drivers of the same version.
:param version: The version to download. Default 'latest'.
:param filename: The filename to save the driver to. Defaults to driver-specific.
:param return_info: If True, return an Object with more download information.
:return: The absolute path of the downloaded driver, or None if something failed.
"""
注意点
Edgeは実験的なコードなのでバージョンを指定したほうがいいらしい
Webdriver Manager for Python
さまざまなブラウザのドライバーの管理を簡単にするスクリプト
- ライセンス:Apache-2.0
- 対応OS:Windows/Linux/macOS
- 対応ブラウザ
Google Chrome (chromeDriver)
Firefox (geckoDriver)
Opera (operaDriver)
Edge (edgeDriver)
インストール
pip install webdriver_manager
使い方
今まではdriverを更新があるたびに手でダウンロードしChromeなら次のような感じでパスなどを設定していたのを
webdriver.Chrome('/home/user/drivers/chromedriver')
ChromeDriverManager(path=custom_path).install()
かわりに
from webdriver_manager.chrome import ChromeDriverManager
webdriver.Chrome(ChromeDriverManager().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())
Opera
from webdriver_manager.opera import OperaDriverManager
driver = webdriver.Opera(executable_path=OperaDriverManager().install())
Webdriver Controller
webドライバーを管理するCLIツール?
- ライセンス:MIT
- 対応OS:Linux/macOS
- Python 3.5+
- 対応ブラウザ
Google Chrome (chromeDriver)
Firefox (geckoDriver)
インストール
pip install webdriver_controller
使い方
webdriver_controller [-h] {download,cleanup,list,start} ...
Webdriver controller
positional arguments:
{download,cleanup,list,start}
download Webdriver のバイナリをダウンロード
cleanup Webdriver のバイナリを削除
list ダウンロードしたWebdriverのリストを表示
start Selenium を開始
optional arguments:
-h, --help このヘルプメッセージ(原文)を表示
webdriverdownloader
- ライセンス:MIT
- 対応OS:Windows/Linux/macOS
- python: 2.7.16 or 3.8
- 対応ブラウザ
Google Chrome (chromeDriver)
Firefox (geckoDriver)
Opera (operaDriver)
インストール
pip install webdriverdownloader
使い方
Firefox
from webdriverdownloader import GeckoDriverDownloader
# 最新版をインストール
gdd = GeckoDriverDownloader()
# v0.20.0版をインストール
gdd.download_and_install("v0.20.0")
Chrome
from webdriverdownloader import ChromeDriverDownloader
# 最新版をインストール
gdd = ChromeDriverDownloader()
# v0.20.0版をインストール
gdd.download_and_install("v0.20.0")
Opera(Chromiumベース)
from webdriverdownloader import OperaChromiumDriverDownloader
# 最新版をインストール
gdd = OperaChromiumDriverDownloader()
# v0.20.0版をインストール
gdd.download_and_install("v0.20.0")
CLIツールとしての使い方
webdriverdownloader browser:version
Chromeの2.38, Firefoxの最新版, operaのv2.35をインストール場合
webdriverdownloader chrome:2.38 firefox opera:v.2.35
webdrivermanager
WebDriverバイナリの最新バージョン(または特定のバージョン)を自動的に検索およびダウンロードしてパスを通してくれるスクリプト
webdriverdownloaderと使い方が現在のところ(2020/3/12)同じ
- ライセンス:MIT
- 対応OS:Windows/Linux/macOS
- python:2.7.15 or 3.7
- 対応ブラウザ
Google Chrome (chromeDriver)
Firefox (geckoDriver)
Opera (operaDriver)
Edge (edgeDriver)
インストール
pip install webdrivermanager
使い方
Firefox
from webdriverdownloader import GeckoDriverDownloader
# 最新版をインストール
gdd = GeckoDriverDownloader()
# v0.20.0版をインストール
gdd.download_and_install("v0.20.0")
Chrome
from webdriverdownloader import ChromeDriverDownloader
# 最新版をインストール
gdd = ChromeDriverDownloader()
# v0.20.0版をインストール
gdd.download_and_install("v0.20.0")
Opera(Chromiumベース)
from webdriverdownloader import OperaChromiumDriverDownloader
# 最新版をインストール
gdd = OperaChromiumDriverDownloader()
# v0.20.0版をインストール
gdd.download_and_install("v0.20.0")
CLIツールとしての使い方
webdriverdownloader browser:version
Chromeの2.38, Firefoxの最新版, operaのv2.35をインストールした場合
webdriverdownloader chrome:2.38 firefox opera:v.2.35