LoginSignup
16
22

More than 1 year has passed since last update.

PythonでWebDriverのインストールを自動化したり補助するモジュールまとめ

Last updated at Posted at 2020-03-12

#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()

かわりに

Chrome
from webdriver_manager.chrome import ChromeDriverManager

webdriver.Chrome(ChromeDriverManager().install())

こんな感じになる
Firefox

Firefox
from webdriver_manager.firefox import GeckoDriverManager

driver = webdriver.Firefox(executable_path=GeckoDriverManager().install())

IE

IE
from webdriver_manager.microsoft import IEDriverManager

driver = webdriver.Ie(IEDriverManager().install())

Opera

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

Firedox
from webdriverdownloader import GeckoDriverDownloader
# 最新版をインストール
gdd = GeckoDriverDownloader()
# v0.20.0版をインストール
gdd.download_and_install("v0.20.0")

Chrome

Chrome
from webdriverdownloader import  ChromeDriverDownloader
# 最新版をインストール
gdd =  ChromeDriverDownloader()
# v0.20.0版をインストール
gdd.download_and_install("v0.20.0")

Opera(Chromiumベース)

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をインストール場合

example
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

Firedox
from webdriverdownloader import GeckoDriverDownloader
# 最新版をインストール
gdd = GeckoDriverDownloader()
# v0.20.0版をインストール
gdd.download_and_install("v0.20.0")

Chrome

Chrome
from webdriverdownloader import  ChromeDriverDownloader
# 最新版をインストール
gdd =  ChromeDriverDownloader()
# v0.20.0版をインストール
gdd.download_and_install("v0.20.0")

Opera(Chromiumベース)

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をインストールした場合

example
webdriverdownloader chrome:2.38 firefox opera:v.2.35
16
22
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
22