【EC2】seleniumのwebdriverを実行する方法|ヘッドレスブラウザとは何か?ローカル環境で実行する場合との違い。

aws-prograshi(プロぐらし)-kv AWS
記事内に広告が含まれていることがあります。
[PR]

EC2上でseleniumのwebdriverを実行する場合は、ローカル環境での実行と異なりchromeをヘッドレスブラウザで動かす必要があります。

ここでは、EC2上でヘッドレスブラウザを起動してwebdriverを使用する手順についてまとめています。


ヘッドレスブラウザとは?

・通常の目に見えるブラウザを立ち上げず、裏側行う処理。
・chromeの場合はヘッドレスchromeと呼ぶ。


EC2用の記述

ヘッドレスブラウザ(chrome)をインポートし、ヘッドレスブラウザとして使用する方法は以下の記述になります。

from selenium import webdriver

#Optionsクラスのインポート(ヘッドレスの設定をするため)
from selenium.webdriver.chrome.options import Options

#Optionsのインスタンスを生成(変数optionsに格納)
options = Options()

#headlessの設定をTrueにする
options.headless = True

#webdriverの起動
driver = webdriver.Chrome(options=options)

#指定したURLを開く
driver.get("URL")

#以下に実行する処理を記述
処理

これで、ヘッドレスブラウザを立ち上げ処理を実行することができます。

以下は実行しているコードの中身の補足になります。


コードの中身の解説

Optionsクラス

selenium.webdriver.chrome.options.Options
 └ Optionsクラスの場所
 └ seleniumモジュールの中のwebdriverモジュールの中のchromeモジュールの中のoptionsモジュールの中のOptionsクラス

from selenium.webdriver.chrome.options import Options
 └ Optionsクラスをインポート
 └ インポート後の呼び出しはOptionsで可能

参考リンク
・Optionsの解説 – 公式サイト
・クラスのインポートについて

上記公式サイトでメソッドの中身も見れるので面白い。


.headlessメソッド

options.headless = True
・引数「headless」の値をTrueにする。
・headlessメソッド自体は引数にheadlessが設定されているか返すもの。


その他のheadless設定方法

add_argumentメソッドを使ってもheadlessの設定ができる。

options.add_argument('--headless')
 └ 引数で「’–headless’」を設定。


webdriver.Chrome(options=options)

・webdriverを起動する関数。
・起動時のオプションを引数で設定。


webdriberによるスクレイピング実行例

googleトップページから左上のテキストを抜き出し表示する場合は次のような記述になります。

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
options.headless = True

driver = webdriver.Chrome(options=options)

driver.get("https://www.google.co.jp/")

element_text = driver.find_element_by_id("hptl").text
print(element_text)

抽出ヵ所

抽出する部分は以下の図の左上の部分になります。


実行結果

「Googleについて ストア」と表示されます。


(補足)ローカルで起動する場合の記述

なお、ローカルの場合はEC2と違いヘッドレスブラウザを設定する必要がありません。以下の記述で実行可能です。

from selenium import webdriver
driver = webdriver.Chrome('chromedriver.exe')

driver.get('url')

ヘッドレスとの違い

・ヘッドレスの設定がない。
・webdriver起動時の引数がchromedriver.exe
・「chromedriver.exe」が同一階層にあること。
 └ 別階層の場合は引数でパスを指定。



ローカル環境での実行方法と違いはありますが、最初の設定さえしてしまえば問題なく使えるようになります。

タイトルとURLをコピーしました