一日に一度、特定のサイトからファイルをダウンロードして別のサーバーにアップロードするという、実にクリエイティブな仕事が発生しました。
しかも遠くにある機体の内部でやれと……。
一瞬、そいつ用のラックトップPCに環境構築して送り付けようかと思いましたが、もしかしてRaspberryPi 4Bの8Gbyteで。
実際のところ
chrome-driverの確保(少し苦労
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()
あとは公式ドキュメントに沿って、写経したり実験したりすれば大抵の事はできるのかな、と。
https://www.selenium.dev/documentation/en/getting_started_with_webdriver/locating_elements/www.selenium.dev