Javascript を用いた動的サイトを対象とし、Selenium を動作させようとしたところ、簡単なところで躓いてしまったので、備忘までに以下に手順を残します。
Mac OS Big Sur 11.1
Python 3.8.3
ChromeDriver 89.0.4389.23
公式のサンプルコード
公式の Getting Started を参照すればよいのですが、Headless についての言及がされていないようでした。
import time
from selenium import webdriver
driver = webdriver.Chrome('/path/to/chromedriver') # Optional argument, if not specified will search path.
driver.get('http://www.google.com/');
time.sleep(5) # Let the user actually see something!
search_box = driver.find_element_by_name('q')
search_box.send_keys('ChromeDriver')
search_box.submit()
time.sleep(5) # Let the user actually see something!
driver.quit()
Headlessで起動するためのオプション
色々と調べたところ、以下の様にheadlessのオプション指定をすることで動作することがわかりました。
options = webdriver.ChromeOptions()
options.add_argument('--headless')
driver = webdriver.Chrome('/usr/local/bin/chromedriver', options=options)
最終的なサンプルコード
‘/usr/local/bin/chromedriver’ の部分は適宜環境に合わせて修正する必要があります。
from selenium.webdriver import Chrome, ChromeOptions
from selenium.webdriver.common.keys import Keys
options = webdriver.ChromeOptions()
options.add_argument('--headless')
driver = webdriver.Chrome('/usr/local/bin/chromedriver', options=options)
driver.get('http://www.google.com/')
# driverを使った何かしらの処理
driver.quit()
まとめ
- Headless で起動するには、 driver に options.add_argument(‘–headless’) を追加
- chromedriver の実行モジュールへのパスは、適宜実行環境に合わせる