Raspberry Pi 2 Model B に Selenium2 (WebDriver) をインストールしてブラウザを Python で headless に操作する方法

Raspberry Pi 2 Model B に Raspbian (Debian ベース) OS をインストールし、WebDriver (Selenium2) を Python で headless に動かして Web スクレイピングができるようになるまでに実施した手順メモ。なお OS インストールならびにインターネット環境への接続までは完了していることを前提とする。

環境情報

  • Raspberry Pi 2 Model B
  • Raspbian JESSIE (Debian 8.0, Linux Kernel 4.1.17)
  • Python 2.7.9
  • Python-pip 1.5.6-5
  • Iceweasel (Firefox ベースのブラウザ) 38.6.1
  • xvfb 1.17.2-1
  • Selenium (WebDriver) 2.52.0
  • PyVirtualDisplay 0.1.5

必要なパッケージのインストール

まず、Linux 上で必要となるパッケージをインストール。iceweasel は Firefox ベースのブラウザで、 xvfb は X Window System をエミュレートするソフトウェア (= 仮想ディスプレイ)で、今回のようにサーバ機や Raspberry Pi といった CLI 環境でヘッドレスにブラウザを起動するために利用。

$ sudo apt-get update
$ sudo apt-get install python python-dev python-pip iceweasel xvfb

次に、Python 上で必要となるライブラリをインストール。PyVirtualDisplay は xvfb を Python から利用するためのライブラリ。

$ sudo pip install selenium
$ sudo pip install pyvirtualdisplay
以下、確認用
$ pip freeze | egrep 'PyVirtualDisplay|selenium'
PyVirtualDisplay==0.1.5
selenium==2.52.0

確認コード

以下のコードを python の対話モード、もしくはスクリプトとして実行し、「Google」とタイトルが取得できれば OK。なお webdriver.Firefox() は処理が遅く、手元の Raspberry Pi では 30 秒近くかかった。

from pyvirtualdisplay import Display
from selenium import webdriver

display = Display(visible=0, size=(800, 600))
display.start()

driver = webdriver.Firefox()
driver.get("https://www.google.co.jp/")
print driver.title
driver.quit()

display.stop()

さらに詳しく

Selenium の公式サイト等に API や使い方の詳しい情報が掲載されている。

yktmnb について

IT土方兼社畜を生業としています。
入社以来 Java を用いた社内向け Web アプリの開発に携わっていました。
最近は IaaS 関連の仕事をしています。
個人的に Android アプリ開発をしたり、ゆるべんという勉強会 (http://wooven.org/) をのんびりとやってます。

カテゴリー: Debian, Python, Raspberry Pi パーマリンク