Ubuntu 20.10 on Raspberry Pi 4B にSeleniumの環境を構築してスクレイピング その1:環境構築とお試し

一日に一度、特定のサイトからファイルをダウンロードして別のサーバーにアップロードするという、実にクリエイティブな仕事が発生しました。

しかも遠くにある機体の内部でやれと……。

一瞬、そいつ用のラックトップPCに環境構築して送り付けようかと思いましたが、もしかしてRaspberryPi 4Bの8Gbyteで。

実際のところ

前提

そこそこ時間がかかるので、注意

pythonの環境

python3系がある状態で

pip install selenium

chromeにバイナリ

chromiumを最新に

$ sudo apt install chromium-browser

chrome-driverバイナリを確保します。
公式ページにはデスクトップ環境用のものしかなく、arm系のはありません。
仕方がないので、開発リポジトリに潜ります。
launchpad.net
へ行き、今回のターゲットである64bit版Ubuntuに対応したarm64系のビルドを探します。

$ wget https://launchpad.net/~canonical-chromium-builds/+archive/ubuntu/stage/+build/20989279/+files/chromium-chromedriver_88.0.4324.150-0ubuntu0.18.04.1_arm64.deb
$ sudo dpkg -i chromium-chromedriver_88.0.4324.150-0ubuntu0.18.04.1_arm64.deb
$ ls /usr/lib/chromium-browser/chromedriver
/usr/lib/chromium-browser/chromedriver

動作テスト

参考もと様のページそのまんま写経。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
import time
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
 
# ブラウザの場所は絶対PATHとして指定
CHROME_BIN = "/usr/bin/chromium-browser"
CHROME_DRIVER = '/usr/lib/chromium-browser/chromedriver'
 
# 実行オプション
options = Options()
options.binary_location = CHROME_BIN
options.add_argument('--headless')
 
# 実行インスタンス
driver = webdriver.Chrome(CHROME_DRIVER, options=options)
 
# URLに接続
driver.get("https://www.google.co.jp")
 
# 読み込み用の待機。性能に自信があるとかでない限り、やった方が無難。
time.sleep(5)
 
# 結果を変数に格納
html = driver.page_source

# 何かしら実行。今回はプリントするだけ
print(html)

# インスタンスを片付ける。整理整頓は基本。
driver.quit()

あとは公式ドキュメントに沿って、写経したり実験したりすれば大抵の事はできるのかな、と。
www.selenium.dev