はじめに
PythonでFirefoxを使いスクレイピングをしようとしたときにエラーに遭遇しました。
今回はその時のエラーの内容と原因と対処方法、またエラーが発生するサンプルプログラムのせていますので参考になればと思います。
エラーの原因と対処法
エラー
まず発生したエラーですが、
selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.
というものです。
日本語で訳すと
「selenium.common.exceptions.WebDriverException: メッセージ: ‘geckodriver’の実行ファイルはPATHに必要です。」
となります。
ファイルパス指定に関係するエラーでした。
原因とサンプルソース
原因
このエラーは、PythonのSeleniumライブラリを使ってWebブラウザを操作しようとした際によく発生します。具体的には、Firefoxブラウザを自動操作するためのドライバである’geckodriver’が、システムのPATHに含まれていないときに発生します。
ファイルパスにないから呼び出しで失敗していたのが原因でした。
エラーが発生するソースコード
まずはエラーが発生するソースコードの例をみます。
(’geckodriver’のパスが指定されていない場合とします)
from selenium import webdriver
driver = webdriver.Firefox()
これを実行すると
(省略)
raise WebDriverException(
selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.
とWebDriverExceptionが発生します。
対処方法
対処方法としては、’geckodriver’をダウンロードし、それをシステムのPATHに含まれるディレクトリに配置することで解決できます。
以下に具体的な手順を示します。
- GeckoDriverのリリースページから、利用しているシステムに対応する最新のGeckoDriverをダウンロードします。
- ダウンロードしたファイルを解凍し、geckodriverまたはgeckodriver.exe(Windowsの場合)という名前の実行可能ファイルを得ます。
- この実行可能ファイルを、システムのPATHに含まれるディレクトリ(例えば、/usr/local/binやC:\Windows\system32など)に移動します。
- コマンドラインから
geckodriver
と入力して実行し、エラーが出ないことを確認します。これで、PythonのSeleniumライブラリからgeckodriverを使用できるようになります。
修正したソースコード
エラーを修正したプログラムは次のようになります。
(geckodriverがうまく追加できていること)
from selenium import webdriver
# geckodriverのフルパスを指定してFirefoxを起動
driver = webdriver.Firefox(executable_path='/path/to/your/geckodriver')
修正したパスではファイルパスを引数として指定するように変更(3行目)しています。パスがうまく通っているとFirefoxを起動することができます。
さいごに
今回はFirefoxを使ったSeleniumのスクレイピングについてでした。
普段Chromeを使っているのでFirefoxを使ったことがなかったのでいきなりつまづいてしまいました。
おそらくFirefoxを使ったことがない方は同じようなエラーに遭遇するのではないかと思います。
この記事がお役に立ったのなら嬉しいです。
最後までお読みいただきありがとうございます。