2020年6月11日木曜日

Raspberry PIでSeleniumを使ってスクレイピング

目的

Raspberry Pi上でSeleniumでのスクレイピングをする環境準備まで

準備

chromium-chromedriverのインストール

https://launchpad.net/ubuntu/trusty/+package/chromium-chromedriver

chromium-chromedriver 65.0.3325.181-0ubuntu0.14.04.1 in armhf (Updates)を選択し、ダウンロード

インストールにはapt-get installを使う

$sudo apt-get install chromium-chromedriver_65.0.3325.181-0ubuntu0.14.04.1_armhf.deb

Seleniumのインストール

素直に apt-getで

$sudo apt-get install selenium

これで完了です

おまけ

現在のDriverとchromiumのバージョンを調べる

$/usr/lib/chromium-browser/chromedriver -v
ChromeDriver 2.35 (0)
$chromium-browser --version
 --disable-quic --enable-tcp-fast-open --ppapi-flash-path=/usr/lib/chromium-browser/libpepflashplayer.so --ppapi-flash-args=enable_stagevideo_auto=0 --ppapi-flash-version=
Chromium 78.0.3904.108 Built on Raspbian , running on Raspbian 10

Headlessだとダウンロードされない

現状のChromeDriverのバージョンではセキュリティの関係でダウンロードができないようだ

Downloading with chrome headless and selenium

コードに下記に示した例を追加したらダウンロードが行える

def enable_download_in_headless_chrome(driver, download_dir):
    # add missing support for chrome "send_command"  to selenium webdriver
    driver.command_executor._commands["send_command"] = ("POST", '/session/$sessionId/chromium/send_command')

    params = {'cmd': 'Page.setDownloadBehavior', 'params': {'behavior': 'allow', 'downloadPath': download_dir}}
    command_result = driver.execute("send_command", params)


browser = webdriver.Chrome(driverpos, chrome_options=options, service_log_path='/dev/null')
enable_download_in_headless_chrome(browser, os.getcwd() + "/data")