raspberry pi に instapy をインスール仕様とした際にハマったのでメモ 最終的にはinstapy で使用する geckodriver の動作確認までを行う
ソフトウェア構成
システム raspberry pi 4B
RAM 4GB
OS Ubuntu mate 20.04 64bit
手順
公式手順を参考にインスールする
firefox は既にインストール済なので手順を省略する
$ firefox -v Mozilla Firefox 96.0
firefox-source-docs.mozilla.org
firefox の version に対応したgeckodriverをインスールする 今回、対応するversionはgeckodirverを0.24以上である。
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!