chromedriver インストールメモ

(コメント)

Ubuntu 16.04

参考 EC2 UbuntuでGoogle Chromeをヘッドレス実行してスクリーンショットを採取する手順 - Qiita
python 2.7 - Unknown error: Chrome failed to start: exited abnormally - Stack Overflow

Chrome

curl -O https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb
sudo apt update
sudo apt -f install -y

テスト

cd /tmp
google-chrome --headless --disable-gpu --screenshot https://www.example.com/
imgcat screenshot.png # imgcat については後述

chromedriver

curl https://chromedriver.storage.googleapis.com/LATEST_RELEASE

curl -O  https://chromedriver.storage.googleapis.com/2.41/chromedriver_linux64.zip

unzip chromedriver_linux64.zip

sudo mv chromedriver /usr/local/bin/

テスト

chromedriver --verbsose &
curl -d '{ "desiredCapabilities": {"browserName": "chrome", "chromeOptions": {"args": [ "--headless" ]} }}' http://127.0.0.1:9515/session

sessionId が返ってくる
ちなみに、--headless をつけない場合

xvfb-run chromedriver --verbsose &

とする必要がある


ページを開く

curl -d '{"url":"https://www.example.com"}' http://127.0.0.1:9515/session/<session-id>/url


スクリーンショット

curl http://127.0.0.1:9515/session/<session-id>/screenshot | python3 -c "import sys, json; print(json.load(sys.stdin)['value'])"|base64 -d |imgcat

※ screenshot コマンドを実行 ➝ 結果が Base64 を含む JSON で返ってくるので Python でパース ➝ デコードしてバイナリ化 ➝ imgcat で iterm2 に表示

※動かない場合 --no-sandbox --disable-dev-shm-usage なんかも気にしてみる

メモ: Webセキュリティを無効 --ignore-certificate-errors --disable-web-security


参考: https://www.pawangaria.com/post/automation/browser-automation-from-command-line/

Python ライブラリ

pyvirtualdisplay 必要

sudo apt install xvfb
pip install selenium chromedriver pyvirtualdisplay


テストコード

from pyvirtualdisplay import Display
display = Display(visible=0, size=(1280, 800))
display.start()

from selenium.webdriver import Chrome, ChromeOptions

options = ChromeOptions()
options.add_argument('--headless')
options.add_argument('--disable-gpu')
driver = Chrome(options=options)

driver.get('https://example.com')
driver.get_screenshot_as_file('/tmp/screenshot.png')

おまけ サーバ上の画像を見る

iTermを使っているなら

https://gist.github.com/wesbos/eac5f93478002312db1f このスクリプト

sudo curl -o /usr/local/bin/imgcat -O https://raw.githubusercontent.com/gnachman/iTerm2/master/tests/imgcat && sudo chmod +x /usr/local/bin/imgcat

で、imgcat をサーバ上にインストールしておけば、

imgcat /tmp/screenshot.png

で画像がターミナルに表示される。

Macの場合の注意: サイトからバイナリ落として使いましょう

Mac で、brew からインストールした chromedriver を使っている場合、get メソッドの際

data:;

というURLが開いて

    raise RemoteDisconnected("Remote end closed connection without"
http.client.RemoteDisconnected: Remote end closed connection without response

で停止する場合があります。

brew uninstall --force chromedriver

で chromedriver をアンインストールし、

http://chromedriver.chromium.org/downloads ここから最新版の Mac 用バイナリをダウンロードし、ウイルススキャンしてから /usr/local/bin/ にでも入れて使うといいでしょう。

現在未評価

コメント

最近のツイート

  • ytyng

    ytyng @ytyng

    俺もスタバアプリにログインできないよ
    1 ヶ月, 1 週間 前

  • 安藤拓郎 Takuro Ando

    安藤拓郎 Takuro Ando @takuroando

    ytyng

    これまでいろんなグッズを作ってきたけど、今回は「お米」と聞いて買うしかないなと。今夜の夕食はコシヒカリ!箸もセットだし^^ https://t.co/01ucQx9qtw #腰乃展 #マンガ展 https://t.co/4VL2vOe0Og
    1 ヶ月, 3 週間 前

  • ytyng

    ytyng @ytyng

    講談社さんとやった全部入り電子書籍セットがギネスブックに登録されたよー https://t.co/rbkd3IYub0
    1 ヶ月, 3 週間 前