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.

https://ubuntu.com/aws/pro
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をコピーしました