Raspberry Pi 4Bへ Instapy のインストール

github.com

raspberry pi に instapy をインスール仕様とした際にハマったのでメモ 最終的にはinstapy で使用する geckodriver の動作確認までを行う

ソフトウェア構成

システム raspberry pi 4B

RAM 4GB

OS Ubuntu mate 20.04 64bit

手順

github.com

公式手順を参考にインスールする

firefox は既にインストール済なので手順を省略する

$ firefox -v
Mozilla Firefox 96.0

firefox-source-docs.mozilla.org

firefox の version に対応したgeckodriverをインスールする 今回、対応するversionはgeckodirverを0.24以上である。

github.com

githubで公開されているgeckodriverはアーキテクチャがarm64だと想定され、raspberry pi は arm64のため上手く動作しない。 そのため、launchpadからarm64に対応するパッケージをインスールする 96.0+build2-0ubuntu0.20.04.1 : firefox-geckodriver : armhf : Focal (20.04) : Ubuntulaunchpad.net

$ wget http://launchpadlibrarian.net/579504546/firefox-geckodriver_96.0+build2-0ubuntu0.20.04.1_arm64.deb
$ sudo dpkg -i firefox-geckodriver_96.0+build2-0ubuntu0.20.04.1_arm64.deb
$ geckodriver -V
geckodriver 0.30.0

ヘッドレスモードだと実行エラーが出て、動作しないため 仮想ディスプレイを用いて動作させる。

$ sudo apt-get install xvfb
$ sudo pip3 install pyvirtualdisplay
$ sudo reboot

以下のコードを実行する。

from selenium import webdriver
from bs4 import BeautifulSoup
from time import sleep
import os

Options = webdriver.FirefoxOptions()
# ヘッドレス
#Options.headless = True

print('start')
driver = webdriver.Firefox(options=Options)
print('get')
driver.get("http://www.example.com/")
print(str(driver.page_source))
print("successfully!")

以下にように仮想ディスプレイを用いて実行し、動作を確認した。

$ xvfb-run  python3 test.py
省略
successfully!