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 の実行モジュールへのパスは、適宜実行環境に合わせる