Amazon Linux 2にSelenium環境を構築【スクレイピング/RPA】

この記事は約 10 分で読めます。

Daisuke

総合旅行業務取扱管理者の資格持ち。
テーマ性がありつつも自由度の高い旅行を設計して実行しています。

得意分野:乗り物全般/一人旅

色々なサイトを見ながら構築しましたが、中々色々なところで引っかかったので思い出しながら流したコマンドをメモしておきます。

目次

概要

最近(?)はやりのRPAにも使えるWebアプリケーションの自動化ツールであるSelenium。勉強したかったので使えるようにしようと思いましたが、将来的に自動処理をしてみたいことがあったのでWebサーバに環境構築を検討しました。

ただし現在このブログを運営しているXserverにはroot権限がないので、構築がやや面倒そう(できないとは言っていない)。

そこで先般AWSの勉強のためにアカウントを作成していたことを思い出し、無料利用枠を利用してAWS上にLinuxサーバを立ててSelenium環境構築することにしました。

Amazon Linux 2の構築

無料枠で構築できるインスタンスの一つである「Amazon Linux 2」を利用しました。AWSの環境構築は手段の一部であるのでミニマムな設定です。

そしてその設定は下記のサイトがとても参考になりました。順を追ってAWSの操作方法を説明されていますのでとても分かりやすいです。よって構築の説明は割愛。

▼参考サイト:AWSを無料で利用する方法を実際にやってみて注意点まとめてみた。(外部サイト)

note(ノート)
AWSを無料で利用する方法を実際にやってみて注意点まとめてみた。|mc_kurita AWS アカウントには 12 ヶ月の無料利用枠が含まれています。でもいくつかの注意点があり、課金されてしまうこともあるのでその辺を自分用にまとめてみた。 AWSとは「Amazon...

Selenium環境の構築

最初に私が環境構築で引っかかったところを先に列挙しておきます。


pythonのバージョンが切り替わらない
Seleniumのインストールでエラーがでる
yumがバグる

ちなみに私のサーバ知識は、参考サイトを確認しながらミニマム構成なWordPressのWEBサーバ構築ができる程度。システム開発レベルも簡単なJavaScript、VBA、Batが調べながら書ける程度でPythonは初めて。

用は初心者だけど一念発起してRPAやスクレイピングの勉強がしたい方たちが、このサイトを見ればスムーズに構築できるようにコマンドを順番にメモしていきます。赤枠、青枠は読み飛ばして問題ないです。

まず、設定するうえでベースとさせていただいたのは下記サイトで、このサイト通りに設定していく中で、上記の通り引っかかったところを補足します。

順番通りにやればAmazon Linux 2でSeleniumが使えるようになります。

▼参考サイト:CENTOS7でPYTHON+SELENIUM+CHROMEの動作環境の作成(外部サイト)

1.Pythonのインストール

//パッケージのアップデート
sudo yum update

//Python3インストール
sudo yum install python3

まずはPython3のインストール。

//バージョン確認
python -V
---------------------------------------------------------------------
Python 2.7.x

しかしここでインストール完了後、バージョン確認を実施すると、何故かPython 2系が表示されます。これはPython 3系をインストールしても、もとからあったPython 2系がデフォルトに設定されていることが原因のようです。

//コマンドのディレクトリへ移動
cd /usr/bin/

//Python 3のバージョン確認
ls pyth*
---------------------------------------------------------------------
python   python2.7         python2-config  python3.7   python-config
python2  python2.7-config  python3         python3.7m

//現在のデフォルトリンク(Python 2系)を解除
sudo unlink ./python

//新たにデフォルトリンク(Python 3系)を設定
sudo ln -s /usr/bin/python3.7 ./python

//Python 3系がデフォルトになったことを確認
python -V
---------------------------------------------------------------------
Python 3.7.x

▼参考サイト:AmazonLinux 2 に python 3をインストール(外部サイト)

ゴミ経営者の会計日記
AmazonLinux 2 に python 3をインストール このブログは AWS 上に構築していますが、Webサーバー(Amazon Linux2)にpython3を導入したので、作業ログとして実施した内容を残しておきたいと思います。 デフォルトのpyt...

2.Seleniumのインストール

×エラー
pip3 install selenium
このコマンドを実行するとエラーが発生します。

pip3 install selenium --user

こうすればエラー無くインストールできます。管理者権限の必要のないディレクトリにパッケージをインストールするらしい。

▼参考サイト:pip install nfcpyでPermission denied発生したときの対処法(外部サイト)

あわせて読みたい
pip install nfcpyでPermission denied発生したときの対処法 macでFeliCaカードへアクセスしようと思い、nfcpyをインストールしようとした時に、Permission denied 発生。pyopensslのインストール時にも同様のエラーが発生するようだ...

3.yumの修正

Chrome関連のインストールを進める前にyumの設定変更が必要です。

×エラー
yum install xxx
———————————————————————
File “/usr/bin/yum”, line 30
except KeyboardInterrupt, e:
^
SyntaxError: invalid syntax

このコマンドを実行するとエラーが発生します。

まあこのようにインストールしようとすると意味不明なエラーが出るわけですね。

これはyumがPython 2系で記述されたコマンドであることが原因みたい。先ほどデフォルトをPython 3系にしたことで不具合が発生しています。これを2系で動かすために2つファイル修正します。

sudo vim /usr/bin/yum
#!/usr/bin/python2
…
…

1行目を上記の通り修正します。pythonの後ろに2を付けます。

:wq

編集モードを解除し、上書きして完了。

sudo vim /usr/libexec/urlgrabber-ext-down
#!/usr/bin/python2
…
…

1行目を上記の通り修正します。pythonの後ろに2を付けます(さっきと同じ)。

:wq

こちらも上書きして完了。

これで次の作業の準備は整いました。

▼参考サイト:File “/bin/yum”, line 30 except KeyboardInterrupt, e: と表示されyumが使えない(外部サイト)

ゴミ経営者の会計日記
File “/bin/yum”, line 30 except KeyboardInterrupt, e: と表示されyumが使えない yum コマンドを使おうとするとエラーが出て失敗する事象が発生しました。環境はAmazon Linux2 です。 root # yum --update File "/bin/yum", line 30 ex...

4.Google ChromeとChromeDriverのインストール

sudo vi /etc/yum.repos.d/google-chrome.repo

レポジトリを作成しましょう。

[google-chrome]
name=google-chrome
baseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearch
enabled=0
gpgcheck=1
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub

コピペしましょう。

:wq

編集モードを解除して上書き完了。

//Chromeのインストール
sudo yum install --enablerepo=google-chrome google-chrome-stable

//バージョン確認
google-chrome --version
---------------------------------------------------------------------
Google Chrome 86.0.4240.111

これでGoogle Chromeがインストールされました。これだけでは動かせないのでChromeDriverをインストールします。

このサイトからChromeDriverを取得するのですが、ここで重要なのが先ほど調べたバージョン。Google ChromeとChromeDriverはそのバージョンをマッチさせる必要があります。

今回はGoogle Chromeのバージョンが86だったので、この同じバージョンのChromeDriverをダウンロードします。

これをクリックすればダウンロードが始まります。

私は一度Windowsでダウンロードし、Linuxサーバにアップする方法で行いました。(コマンドでLinuxサーバから直接取得も可能です。)

TeraTermならメニューの[File] < [SSH SCP]で、FromはWindows側のフォルダで各自の設定、Toは上記の通りの設定で大丈夫です。

//ユーザディレクトリに上がったzipを解凍
sudo unzip /home/ec2-user/chromedriver_linux64.zip

//PATHの通ったディレクトリへ移動
sudo mv /home/ec2-user/chromedriver /usr/local/bin/

参考情報
echo $PATH
———————————————————————
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ec2-user/.local/bin:/home/ec2-user/bin

PATHの通ったディレクトリたち

5.日本語フォントのインストール

sudo yum install ipa-pgothic-fonts.noarch

これをしておかないと、スクリーンショットを取った時に文字化けします。

そしてこれで最低限の準備完了です。

テスト/まとめ

これで準備が完了し、いよいよSeleniumが利用できる環境となりました。

//作業用フォルダの作成
mkdir /home/ec2-user/selenium

//カレントディレクトリの移動
cd /home/ec2-user/selenium

//テスト用データの作成
vi test.py

ユーザのディレクトリに適当な作業用フォルダを作成し、テスト用データを作成します。

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

options = Options()
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-gpu')
driver = webdriver.Chrome(chrome_options=options)
driver.get('https://www.google.co.jp/')
driver.save_screenshot('test.png')
driver.quit()

googleのトップページのスクリーンショットを、pyファイルと同じ階層のフォルダに生成します。

python3 test.py

このコマンドで実行し、設定が正しければpngの画像が出来上がります。

こんな感じの画像になっていれば正解です。

色々悩みながら、サーバ構築からSeleniumインストール完了まで3時間くらい(?)でできました。途中で上手くいかなくても、心が折れなければ何とかなります。

また、設定後なぜか

selenium.common.exceptions.WebDriverException: Message: unknown error: DevToolsActivePort file doesn't exist

このようなエラーが出てくるようになり、処理できなくなってしましました。

これは小一時間悩んだ後、ふとインスタンスを再起動すると解消しました。所詮パソコン、「さっきまで動いてたのに」となったらとりあえず再起動してみましょう。

以上AWSにSelenium環境を構築したときのメモでした。

この記事の動画

この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

*このサイトはreCAPTCHAによって保護されており、Googleプライバシー ポリシー利用規約が適用されます。

目次