ディスプレイが無い Linux で、Firefox + Selenium を Python 上で起動して自動操作する

(コメント)

Selenium を、ヘッドレス Linux上で、Python から起動する方法です。

事前準備

$ sudo apt-get install xvfb

$ pip install selenium

$ pip install pyvirtualdisplay

ディスプレイの代わりに、仮想フレームバッファの xvfb を使います。

それを Python から簡単に使えるようにするのが pyvirtualdisplay です。

Pythonコード

from pyvirtualdisplay import Display
from selenium import webdriver

display = Display(visible=0, size=(800, 600))
display.start()

fx = webdriver.Firefox()
fx.get("http://example.com")
fx.save_screenshot("/tmp/webdriver-firefox-screenshot.png")

fx.close()
fx.quit()
display.stop()

Firefox で http://example.com を開き、スクリーンショットを保存しています。

終了のさせ方が悪いと、xvfb や firefox がゾンビ化することがありますので、その場合は killall なんかで終了させると良いでしょう。

プロセスが残っているか確認

$ ps -eafw|grep -i "firefox"
$ ps -eafw|grep "xvfb"

また、mac はディスプレイ付きで開発、Linux ではディスプレイ無しで起動させたい場合は

import platform
use_virtual_display = platform.system() == 'Linux'

このように、platform.system() で比較すると比較的簡単にできると思います。

現在未評価

コメント

最近のツイート

  • ytyng

    ytyng @ytyng

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

  • 安藤拓郎 Takuro Ando

    安藤拓郎 Takuro Ando @takuroando

    ytyng

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

  • ytyng

    ytyng @ytyng

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