Python+seleniumでwebdriverとしてheadlessなFirefoxを使う方法

Python+seleniumでスクレイピングをする際webdriverとしてPhantomJSを使っていましたが、前々からPhantomJSは非推奨という警告が出ていて気になっていました。

また、PhantomJSの開発者の方も別のヘッドレスブラウザを使ってほしい意向を示しているようです。

替わりの選択肢(ヘッドレス機能があるもの)としてはFirefoxかChromeくらいしか思い浮かびませんが、今回はデスクトップ版のUbuntuをターゲットとしたプログラムを書いていたためデフォルトで入っているFirefoxを使う事にしました。

seleniumからFirefoxを扱う際は、geckodriverというプロキシを経由して操作を行うようです。

最新版は、ここからダウンロードできますので、Pythonからそのパスを指定します。

geckodriverディレクトリ内にWindows(geckodriver.exe)とLinux(geckodriver)のバイナリを配置しています。

import os
from selenium import webdriver
from selenium.webdriver.firefox.options import Options

if os.name == 'nt':
    geckodriver_path = "geckodriver/geckodriver.exe"
else:
    geckodriver_path = "geckodriver/geckodriver"
options = Options()
options.set_headless(Options.headless)
driver = webdriver.Firefox(executable_path=geckodriver_path, options=options)

これでFirefoxがインストールされていれば動作するはずです(Windows機しかなかったのでこちらでしかテストしていませんが・・・)。

後でLinuxでの動作確認も行おうと思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です