はじめに
PythonでSelenium+Chromedriverを使ってスクレイピングのコードを書いていた時にエラーに遭遇しました。
今回はその時のエラーについての原因と対処方法についてです。
エラーの原因&対処方法
エラー
まず発生したエラーですが
selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain chromedriver using Selenium Manager;
意味を訳すと
「Selenium Managerを使用してchromedriverを取得できませんでした」という意味です。
Seleniumが必要とするChromeDriverを見つけられなかったという意味になります。
原因と対処方法
原因と対処法の流れ
エラーが発生した理由は、メッセージの通りで、プログラムがChromedriverを見つけられないからでした。
具体的にエラーが発生する一般的な原因は次が考えられます
- ChromeDriverがインストールされていない、または
- インストールされているChromeDriverがシステムのPATHに含まれていない、または
- インストールされているChromeDriverのバージョンが、使用しているChromeのバージョンと一致していない
このエラーの対処方法は、以下の通りです:
- ChromeDriverをダウンロードしてインストール
- インストールしたChromeDriverをシステムのPATHに追加
- 使用しているChromeのバージョンに対応するChromeDriverをダウンロードしてインストール
なお2のChromeDriverのパスについてですが、パスがどこにあるかを確認するにはそれぞれ以下のコマンドを使用します。
ファイルパスの確認方法
Macの場合: Terminalを開き、以下のコマンドを入力します
which chromedriver
Windowsの場合: Command Promptを開き、以下のコマンドを入力します
where chromedriver
ファイルパスの追加方法
ファイルパスを追加する場合は上記のファイルパスの場所を確認してから以下の手順を実行します。
Macの場合:
Terminalを開きます。
以下のコマンドを入力します(/path/to/は実際のChromeDriverのパスに置き換えてください):
echo 'export PATH=$PATH:/path/to/' >> ~/.bash_profile
~/.bash_profileは新しいターミナルセッションを開始するたびに読み込まれる設定ファイルです。
次に、新しい変更を適用するために以下のコマンドを実行します:
source ~/.bash_profile
Windowsの場合:
- 「コンピュータ」または「このPC」を右クリックして「プロパティ」を開きます。
- 「システムの詳細設定」をクリックします。
- 「環境変数」をクリックします。
- システム変数の一覧で「Path」を選択し、「編集」をクリックします。
- 「新規」をクリックしてChromeDriverのパスを追加します。
- すべてのダイアログを「OK」で閉じて、変更を保存します。
この手順を完了すると、新たに開始されるシェルセッションからは、どこからでもchromedriverコマンドを使用できるようになります。
既存のコマンドプロンプトやターミナルウィンドウは、更新された環境変数を反映しない場合がありますので、新たに開くか再起動することをお勧めします。
さいごに
今回はChromedriverのパスが通っていないことによりSeleniumが利用できない問題でした。
スクレイピングにChromedriverはほぼ必須(Chromeを使っている人は)なのでこのエラーは意外とよく発生するのではないかと思います。
システムにパスを追加する手順などはOSによったらわからないこともあるのではないでしょうか?
(僕はMACのこの部分で躓きました)
最後までお読みいただきありがとうございました。