Seleniumのwebdriverをphantomjsからgoogle chromeに変更した。
気づいたらphantomjsがメンテナンスが終了してた。
なので、Seleniumで使用しているwebdriverを別のものにしておきたいと思った。
どうやら、google chromeにヘッドレスモードがあるので、それを利用しましょうとのことだ。
Heroku上でも、phantomjsを使っていたので、こちらをchromeに変更するまでを書き残しておく。
Herokuのbuildpackを使えばいい。
buildpackの追加
Herokuのウェブサイト上のアプリケーションページのSettingsからAdd buildpacksをクリックし、Enter URLから
- https://github.com/heroku/heroku-buildpack-google-chrome.git
- https://github.com/heroku/heroku-buildpack-chromedriver.git
の2つを追加する。
次のデプロイ時に反映される。
chrome webdriverの指定
バイナリは、/app/.apt/usr/bin/google-chromeにある。バイナリの場所もオプションで指定する。(後述)
driverは引数から推測すると、chromedriverでいいようだ。
Herokuの環境変数として設定しておく。
heroku config:set CHROME_DRIVER_PATH=chromedriver
heroku config:set CHROME_BINARY_LOCATION=/app/.apt/usr/bin/google-chrome
そして、ヘッドレス起動させるためのオプションを付ける。
Heroku環境であれば、chrome_binary_pathをbinary locationとしてセットする。
from selenium.webdriver.chrome.options import Options
options = Options()
# Heroku以外ではNone
if chrome_binary_path: options.binary_location = chrome_binary_path
options.add_argument('--headless')
を追加し、
driver = Chrome(executable_path=driver_path, chrome_options=options)
オプションを引数として渡せば良い。--headlessの行をコメントアウトすれば、GUIが表示されるが、
Herokuではしないほうがいいだろう。


コメント