LoginSignup
2
4

【selenium】headless備忘録

Posted at

はじめに

【selenium】headless備忘録に関しての備忘録です。
初心者です😅
間違えてる部分が多々あると思います。
もし見つけた場合、ツッコミいただけると助かります🙇

🦁結論🦁

headlessはブラウザのGUIを起動なしでで動作できる。
サーバー、WEBスクレイピング、テスト環境などに適している。

押さえておくべき点

  • ブラウザのGUIを起動せずに動作、実行などができる。
  • GUIがないため、処理が早くなる。
  • サーバーなどの環境に使う。
  • バックグラウンドでの動作が可能。
  • スクリーンショットも可能(実際のGUIと異なる場合がある)

利用シーン

  • サーバーなどでの自動操作したい
  • WEBスクレイピングしたい
  • テストをしたい

注意点

  • --window-sizeで解像度を指定する必要がある。
  • --window-sizeは適切にしないと要素の読み込みなどができないときがある。
  • セキュリティ関連の設定を無効にすることが必要な場合がある。
  • GUIがなくてもJavaScriptは動いてる。

コード例

WebDriverのオプションを設定

headlessを設定する上で必要

options = webdriver.ChromeOptions()

headlessの有効化

これでheadlessを有効する。

options.add_argument("--headless")

GPUハードウェアアクセラレーションの無効化

GPUの処理を停止させることによって処理向上につなげる。

options.add_argument("--disable-gpu")

スクロールバーの非表示

スクリーンショットを撮影する際にスクロールバーが邪魔になることをなくすため。
またサイトによってはスクロールバーの有無がページのレイアウトや、表示に影響を与える時があるために非表示にする。

options.add_argument("--hide-scrollbars")

シングルプロセスモードの有効化

分散処理をさせすぎないようにする。
分散処理をさせすぎてしまうと、かえって処理が遅くなることがあるため。

options.add_argument("--single-process")

SSL証明書エラーの無視

基本はseleniumのテストに使う。
本番環境では使用は避けるべき。

options.add_argument("--ignore-certificate-errors")

ウィンドウサイズの指定

バック側で開いてるウィンドウのサイズ。
スクリーンショットを撮影したいときなどにも有効。

options.add_argument("--window-size=1200x1000")

セキュリティサンドボックスの無効化

seleniumを使う場合、セキュリティサンドボックスを使うと制限があるのとがあるため。
セキュリティサンドボックスを使わないと安全性は下がる。
※基本はあまり使う必要はない。

options.add_argument("--no-sandbox")

一時ディレクトリの設定

一時的にデータを保管する場所を特定する。
データ容量が増えたりする場合に必要。

options.add_argument("--homedir=/tmp")

WebDriverのインスタンスを作成

定義したオプションをこれにより使えるようにしてる(インスタンス化)
オプション定義後に必ず記述。

driver = webdriver.Chrome(options=options)

まとめ😺

headlessはGUI起動なしで動作、実行ができるseleniumのオプション。
サーバーではよく使う技術。


2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4