AWS EC2の「Ubuntu Server」インスタンス上でHeadless Chromeを使用したSelenium Python Scriptを実行する

AWS EC2の「Ubuntu Server」インスタンス上でHeadless Chromeを使用したSelenium Python Scriptを実行してみます。

なお、この記事は「AWS EC2の「Ubuntu Server」インスタンスにPython用のSeleniumとWebdriverのインストール」という記事の続きでもあります。また、事前に「Ubuntu Server」インスタンス上にGoogleChromeをインストールしています。

■PC環境

Windows10(Google Chrome)

AWS インスタンス作成済み(Ubuntu 22.04 LTS (GNU/Linux 5.15.0-1011-aws x86 64))

「Ubuntu 22.04 LTS (GNU/Linux 5.15.0-1011-aws x86 64)」内には「Python 3.10.4」がプレインストールされている状態となっています。

■SSHクライアント「PuTTY」を用いてSSHで接続する

AWS EC2の「Ubuntu Server」インスタンス上でHeadless Chromeを使用したSelenium Python Scriptを実行する前に「AWS マネジメントコンソール」にログインし、「EC2」サービスへ移動します。移動後、「EC2 Management Console」内の左メニューの「インスタンス」の「インスタンス」をクリックすると、作成した「インスタンス」が一覧で表示されます。

作成した「Ubuntu Server」インスタンスの「インスタンス状態」が「実行中」であることを確認します。確認後、SSHクライアント「PuTTY」を用いて、SSHで接続を行います。

Welcome to Ubuntu 22.04 LTS (GNU/Linux 5.15.0-1011-aws x86 64)
* Documentation: https://help.ub 
* Management: https://landscape.canonical.com 
* Support: https://ubuntu.com/advantage
System information as of Fri Jul 8 00:49:50 UTC 2022
System load: 0.0 Usage of 7: 22.6% of 7.58GB Memory usage: 234 Swap usage: 0%
Processes:
100 Users logged in: IPv4 address for etho: ***.**.**.**
* Ubuntu Pro delivers the most comprehensive open source security and,
compliance features.
Ubuntu Pro for AWS | Ubuntu
Ubuntu Pro for AWS, the Ubuntu image optimised for production and professional use on public cloud. Including broad security coverage, live kernel patching, cer...
42 updates can be applied immediately. 22 of these updates are standard security updates. To see these additional updates run: apt list --upgradable

SSHで接続すると、上記のようなメッセージが出力されます。

ubuntu@ip-**-**-**-**(ipアドレス):~$

出力後、上記のように出力されれば、接続は完了となります。

■Headless Chromeを使用したSelenium Python Scriptを作成する

前回、Python用のSeleniumとWebdriverのインストールするために、仮想環境の構築を行いましたので、構築した仮想環境に入ります。

$ cd tests
$ source venv/bin/activate

入るために上記のコマンドを入力し、Enterキーを押します。「cd」コマンドで「tests」ディレクトリ内に移動します。移動後、「source」コマンドで、仮想環境のディレクトリ内に作成された activateスクリプトを実行し、仮想環境に入ります。

$ nano web_test.py

入った後に上記のコマンドを入力し、Enterキーを押します。「nano」コマンドで「nano(ナノ)」エディタを開き、「web_test.py」という名前のPython scriptの中身(実行される処理など)を書いていきます。

■コード

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

###Optionsクラスのオブジェクト
options = Options()
###headlessパラメータ,引数を渡す
options.add_argument('--headless')
###no-sandbox(サンドボックスを無効)パラメータ,引数を渡す
options.add_argument('--no-sandbox')
###特定のVM環境(仮想環境)では、/dev/shmパーティションが小さすぎるため、Chromeが失敗またはクラッシュするので、これを回避する。
options.add_argument('--disable-dev-shm-usage')
###webdriverオブジェクトにheadlessパラメータを追加する
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
###get()を用いてURLの情報を取得する
driver.get("https://laboratory.kazuuu.net/")
###get()で取得した情報からtitleのみをprint()で出力
print(driver.title)
###driverを閉じる。
driver.close()

今回は、データを取得するWebサイトとして当サイトのURL「https://laboratory.kazuuu.net/」を指定しています。

コードを書いた後に、「Ctrl + S」で上書き保存し、「Ctrl + X」で「nano(ナノ)」エディタを閉じます。

■実行・検証

$ python3 web_test.py

Python scriptの作成が完了後、仮想環境に入った状態で、上記のコマンドを入力し、Enterキーを押します。

[WDM] - ====== WebDriver manager ======
2022-07-09 22:53:52,987 INFO ====== WebDriver manager ======
[WDM] - Current google-chrome version is 103.0.5060
2022-07-09 22:53:53,311 INFO Current google-chrome version is 103.0.5060
[WDM] - Get LATEST chromedriver version for 103.0.5060 google-chrome
2022-07-09 22:53:53,312 INFO Get LATEST chromedriver version for 103.0.5060 google-chrome
[WDM] - There is no [linux64] chromedriver for browser 103.0.5060 in cache
2022-07-09 22:53:53,489 INFO There is no [linux64] chromedriver for browser 103.0.5060 in cache
[WDM] - About to download new driver from https://chromedriver.storage.googleapis.com/103.0.5060.53/chromedriver_linux64.zip
2022-07-09 22:53:53,489 INFO About to download new driver from https://chromedriver.storage.googleapis.com/103.0.5060.53/chromedriver_linux64.zip
[WDM] - Driver has been saved in cache [/home/ubuntu/.wdm/drivers/chromedriver/linux64/103.0.5060.53]
2022-07-09 22:53:53,971 INFO Driver has been saved in cache [/home/ubuntu/.wdm/drivers/chromedriver/linux64/103.0.5060.53]
Men of Letters鐚?<潟祉・?祉・帥若削? ? 茫??
?
(venv) ubuntu@ip-***-**-**-**:~/tests$

Enterキーを押すと、上記のようなメッセージが出力されました。出力内容を確認すると、今回指定したWebサイトから情報を取得し、取得した情報からタイトルのみを出力させることに成功している。成功はしたが、ubuntuを日本語化しておらず、Webサイトのタイトルで文字化けが発生してしまった。

コメント

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