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() で比較すると比較的簡単にできると思います。
コメント