はじめに
【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のオプション。
サーバーではよく使う技術。