raspberry piでseleniumを使うときにハマったはなし

Python

JavaScriptを使った動的なWebサイトのスクレイピングをするときに、raspbian上でselenium経由でChromeを使うときにハマったからメモ。

概要

  • 「selenium.common.exceptions.WebDriverException: Message: ‘chromedriver’ executable needs to be in PATH.」エラーが出る
    • chromium-chromedriverをインストールする
    • chromedriverのパスをexecutable_pathに指定する
  • 「Chrome failed to start: exited abnormally」エラーが出る
    • –headlessオプションを追加して解決
  • 簡単なスクレイピングがseleniumのメソッドで済むからbeautifulsoup4を使わなくても良い(?)

 

executable needs to be in PATH

要はchromedriverのパスが見つからんというエラー。

raspbianにchromiumをインストール済みとして、chromedriverをインストールする。

インストール先は次の場所。

もしくはwget等でchromedriverの最新版を引っ張ってきて/usr/lib/chromium-browser/に配置することでもOK。

続いてchromedriverをexecutable_pathに指定する

 

Chrome failed to start: exited abnormally

guiなしでchrome起動してくれというエラーメッセージ。

–headlessオプションを使って解決する。

 

seleniumのメソッドを使ってスクレイピング

seleniumの find_element_by_id や find_element_by_class でスクレピングができそうだった。

例えば <div id=”hoge”>で囲まれている要素の文字列を取得するには

でOK。

 

総括

今回のことを踏まえた一連の処理をするコード。

 

雑感

これまでスクレイピングのときはbeautifulsoup4を使っていたがJavaScriptで動的に生成してるページは引っ張ってこれなかったので今後はselenium使えばいいかなと言う気持ち。

selenium、もともとはUIテストツールらしいけど…簡単なスクレピングをするときに便利だった。

 

参考

Seleniumでchromedriverがある場所を指定してあげないとエラーになった

Pythonからseleniumでブラウザを操作するときに、ハマった。。。

[Selenium]chromedriverで”Chrome failed to start: exited abnormally”が出る際の対処法

headless chromeをPythonのseleniumから動かして引数を考えた (Ubuntu 16.04)

コメントを残す

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください