chromiumとSeleniumの「Failed to load extension from . manifest…」というエラーの解決法

こんにちは、りなおん (@netnobonsai) です。

Ubuntu20.04において、chromiumとseleniumによるウェブスクレイピングを考えていて、pythonによってブラウザは起動したものの以下のようなエラーが出ました。

一応chromiumは起動はしている。

エラーには「Failed to load extension from: .Manifest file is missing or unreadable」というエラー画面がでたので、それで検索したところ、stackoverflowでも似たような質問がありました (質問者はUbunut Software Storeからchromiumしていたものをアンインストールしてapt-getでchromiumを再インストールしたら動いたらしい)。
しかし、私はそれでは解決せずchromeで代用することでエラーが出ないようにしたのでその手順について説明します。

問題

pythonを使ってwebdriverによりchromiumを起動しようとおもったら以下のようなエラーが出ました。

stackoverflowの似たような質問の解決法 (chromiumをapt-getで再インストールするという方法) では解決しませんでした。

実行環境

  • Ubuntu 20.04 LTS
  • chromium (エラー発生時。解決するときにはchromeで代用することとなった)

解決法

seleniumではchromiumではなくchromeを扱うことで解決しました。

ubuntu用のchromeをダウンロードします。

chromeのダウンロードが完了したらchromeのバージョンを確認してください。
というのも、chromewebdriverが扱えるchromeのversionは決まっているらしいです。
ターミナルでchromeのversionを確認するため次のコマンドを打ちます。


google-chrome --version

私の場合 (2021年1月11日) は


Google Chrome 87.0.4280.141


と表示されました。

続いて、chromewebdriverのversionの確認です。
ターミナルでchromedriverのversionを確認するため次のコマンドを打ちます。


chromedriver --version

私の場合は以下のように表示されました。


ChromeDriver 84.0.4147.30

chromeとchromewebdriverのバージョンが一致している人はおそらくここでseleniumがエラーなく動かせると思います。
私の場合は、chromeのバージョン (Google Chrome 87.0.4280.141)とchromewebdriverのバージョン (ChromeDriver 84.0.4147.30) が一致していませんでした。

バージョンが一致していないときは、chromewebdriverのバージョンを変えます。
chromeのバージョンにあわせて (完全に一致していなくても良いと思われる) 、chromewebdriverをダウンロードします (最新版とは限らない)。

再度、ターミナルでchromedriverのversionを確認するため次のコマンドを打ちます。


chromedriver --version

以下のように、chromewebdriverのバージョンが変更できました。


ChromeDriver 87.0.4280.88

エラーが出ないか、pythonで適当なプログラムをかいて実行してみます。


from selenium import webdriver
browser = webdriver.Chrome()

画面は出しませんが、最初に出ていたエラーが表示されず、chromeを起動することができたのでウェブスクレイピングに進めそうです (本当はchromiumが良かったのですが)。

最後に

この記事が読者の方の参考になれば幸いです。

ご覧頂きましてありがとうございました。

コメント

タイトルとURLをコピーしました