GMO DevelopersDay
GMO DevelopersDay 9.16THU - 9.17FRI
イベント開催まであと 2日

面倒なブラウザ操作をSeleniumを使って自動化する-Vol.03(環境構築編)

お久ぶりです。GMOインターネットグループ株式会社の中村です。
前回のSeleniumの紹介で環境構築部分をサボって省略してまったので、改めてご紹介させていただきます。

なお、seleniumに対応しているブラウザは複数種類ありますが、
今回はchromeについての利用方法をご紹介します。

OSの違い

今回はLinux/Windows2つの環境構築についてご紹介します。
個人的な所感ですが、

  • 実際に目で見ながらデバッグを行う面では統合開発環境などの面でWindows
  • 完成したプログラムを定期実行するならランニングコストが安いLinux

どちらもできないことはないのですが、自分がやりやすい環境で行うのが一番だと思います。
早速、実行環境を構築していきましょう。

環境構築 Linux編

ConoHaでVPSを申し込み

家に余っているハードウェアあったり、仮想環境を構築済みの場合は良いのですが、
そうでない場合はイニシャルコストが高くついてしまいます。

ConoHa VPSであれば時間単位の課金で安価に使用できます。
今回はOSに【Alma Linu(アルマ リナックス)】で環境構築を行います。

サーバー追加の流れは下記の画像をご覧ください。
スペック/OS/パスワード/VM名を画面指示に従うだけで簡単に作成が可能です。

SSHクライントでの接続確認

申し込んだサーバーができたところで手元で楽に操作ができるようにSSH接続を行います。
SSHクライアントソフトは色々なツールがありますが、下記はteratermで説明しています。

まず、申込後に表示されたサーバーのIPを入力します。

その後、下記を入力します。

  • ユーザ名【root】
  • パスフレーズ【申込み時に設定したパスワード】

下記のような黒い画面が出れば接続成功です。

python インストール

Seleniumの実行にはPythonが必要です。
Alma Linux9.0の場合には【Python 3.9.10】がデフォルトで入っていますので今回は追加不要です。

◆バージョン確認コマンド
python3 --version

◆(例)バージョン確認
[root@160-251-22-89 ~]# python3 --version
Python 3.9.10
[root@160-251-22-89 ~]#

pipインストール

seleniumのインストールにはpythonの拡張ライブラリを管理する【pip】が必要になります。
下記コマンドでpipのインストールを行います。

yum -y install pip

seleniumのインストール

pythonがSeleniumを使用できるように下記コマンドでインストールを行います。

pip install selenium

chromeのインストール

今回の記事では【google chrome】を使用した自動操作の方法をご紹介します。
デフォルトではインストールされていないので下記の方法でインストールを行います。

◆リポジトリの追加
echo /etc/yum.repos.d/google.chrome.repo << 'EOF'
[google-chrome]
name=google-chrome
baseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearch
enabled=1
gpgcheck=1
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub
EOF

◆chromeをインストール
yum -y install google-chrome-stable

◆chromeのバージョン確認
google-chrome --version

◆(例)バージョン確認の実行
[root@160-251-22-89 ~]# google-chrome --version
Google Chrome 105.0.5195.125
[root@160-251-22-89 ~]#

chromeドライバーのインストール

SeleniumをChromeで使用する場合は【chromedriver】が必要になります。
これがない場合、selenium↔cherome間でのやり取りができず、ブラウザ自動操作ができません。

chromeDriverとchromeのバージョンは合わせる必要があります。
そのため、先程確認したchromeのバージョンを控えておきます。

その後下記のURLの中でバージョンが合うchromeDriverのダウンロードリンクをコピーします

https://chromedriver.chromium.org/downloads

今回はchrome側のバージョンが【105.0.5195.125】のため
【Supports Chrome version 105】の表記がある一番新しいバージョンのchromeDriverが対象になります。

◆対象のzipファイルをダウンロード
wget コピーしたURL

◆zipファイルを展開
unzip chromedriver_linux64.zip

◆展開したファイルを移動、実行権限の付与
mv chromedriver /usr/local/bin/
chmod 755 /usr/local/bin/chromedriver

◆zipファイルの削除
rm -f chromedriver_linux64.zip

◆実行できるかバージョン表示を確認
chromedriver --version

◆(例)ファイルダウンロード
wget https://chromedriver.storage.googleapis.com/index.html?path=105.0.5195.52/chromedriver_linux64.zip

◆(例)バージョン確認例
[root@160-251-22-89 ~]# chromedriver --version
ChromeDriver 105.0.5195.52 (412c95e518836d8a7d97250d62b29c2ae6a26a85-refs/branch-heads/5195@{#853})
[root@160-251-22-89 ~]# 

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

デフォルトでは日本語フォントが入っていません。
そのため、chromeで開いたときに日本語があると文字化けしてしまいます。

文字化けになるのは避けたいため日本語フォントのインストールを行います。

◆日本語フォントファイルのダウンロード
wget https://moji.or.jp/wp-content/ipafont/IPAexfont/IPAexfont00401.zip

◆zipファイルを展開
unzip IPAexfont00401.zip

◆フォルダ作成/展開したファイルを移動
mkdir /usr/share/fonts/ipa
mv IPAexfont00401/*.ttf /usr/share/fonts/ipa/

◆フォントファイルの再読み込み
fc-cache -fv

◆対象フォントが読み込まれているかチェック(明朝とかがあればOKです)
fc-list | grep IPA

◆zipファイルの削除
rm -f IPAexfont00401.zip

実行テスト

これで実行環境が整いました。
早速、実行テストを行っていきましょう。

下記のファイル【linux_test.py】を作成し、下記コマンドで実行します。
正常に実行できた場合はConoHaのTOPページのキャプチャが作成されます。

# coding: utf-8
#ライブラリ読み込み
from selenium import webdriver
import time

# ドライバーの準備(CUIだと非表示モードでしか起動不可なため)
options = webdriver.ChromeOptions()
options.add_argument('--headless')
options.add_argument('--no-sandbox')

#クロームの立ち上げ
driver=webdriver.Chrome(options=options)

#ページ接続
driver.get('https://www.conoha.jp/conoha/')

#10秒終了を待つ
time.sleep(5)

#画面キャプチャを取得
driver.save_screenshot('conoha.png')

#クロームの終了処理
driver.close()
◆ファイル作成
vi linux_test.py

◆スクリプトの実行
python3 linux_test.py

◆ConoHaのキャプチャ(conoha.png)が出力されているかチェック
ll

環境構築 Windows編

ConoHaでもWindowsServerの申し込みが可能です。
ただ、Windowsについては手元のPCで動かす方のほうが多いと思うので、申し込み方法は割愛させていただきます。
こちらの紹介では【Windows10】を例にしています。

pythonインストール

Windowsにpythonはデフォルトインストールされていませんので、
下記リンクより安定版(Stable Release)のダウンロードを行います。
現時点の最新安定版は【3.10.7】になります。

https://www.python.org/downloads/windows/

ダウンロードしたexeファイルを実行します。
この際に赤線部分の【Add Python 3.10 to PATH】にチェックを入れるようしてください。
チェックを入れない場合は手動で環境変数の変更が必要です。

pip インストール

seleniumのインストールにはpythonの拡張ライブラリを管理する【pip】が必要になります。
Windowsではpythonインストール時に同時にインストールされるので割愛します。

selenium インストール


pythonがSeleniumを使用できるようにしていきます。
まず、スタートボタンをクリックし、Windowsシステムツール→コマンドプロンプトを管理者権限で実行します。

コマンドプロンプトに下記コマンドを打ち込みインストールを行います。

pip install selenium

chromeのインストール

次にchromeのインストールを行います。
下記のURLよりインストールファイルをダウンロードし、進めてください。

https://www.google.com/intl/ja_jp/chrome/

インストールが終わったら、chromeを立ち上げてバージョンを確認していきます。
確認方法は下記画像を参照してください。

chromeドライバーのインストール

SeleniumをChromeで使用する場合は【chromedriver】が必要になります。
これがない場合、selenium↔cherome間でのやり取りができず、ブラウザ自動操作ができません。

chromeDriverとchromeのバージョンは合わせる必要があります。
そのため、先程確認したchromeのバージョンを控えておきます。

その後下記のURLの中でバージョンが合うchromeDriverをダウンロードします。

https://chromedriver.chromium.org/downloads

今回はchrome側のバージョンが【105.0.5195.127】のため
【Supports Chrome version 105】の表記がある一番新しいバージョンのchromeDriverが対象になります。

ダウンロードしたファイルを、下記のように展開をします。

展開してできたフォルダ【chromedriver_win32】を任意の場所に移動します。
後から変更もできますので、迷った場合はCドライブ直下でも問題ありません。

移動が終わったら、環境変数への登録を行います。
Windowsキー+Sで検索ボックスが開くので【環境変数】と入力すると、
【システム環境変数の編集】がHitするのでクリックしてください。

画面下部の【環境変数】をクリックします。

Pathと書いてある行を選択して編集ボタンをクリックします。

画面下部の空白に移動した先のディレクトリを入力します。
Cドライブ直下にディレクトリを配置した場合は下記の例になります。

実行テスト

これで実行環境が整いました。
早速、実行テストを行っていきましょう。

下記のファイル【windwos_test.py】を作成し、下記コマンドで実行します。
正常に実行できた場合はConoHaのTOPページのキャプチャが作成されます。

# coding: utf-8
#ライブラリ読み込み
from selenium import webdriver
import time

#クロームの立ち上げ
driver=webdriver.Chrome(options=options)

#ページ接続
driver.get('https://www.conoha.jp/conoha/')

#10秒終了を待つ
time.sleep(5)

#画面キャプチャを取得
driver.save_screenshot('conoha.png')

#クロームの終了処理
driver.close()
◆cmdでスクリプトの実行
python windows_test.py

準備完了!

これで実行環境が整いました。
更に開発環境を快適にしたい場合はVisual Studio codeなどのエディタを入れると便利です。

関連記事では、Seleniumでどんな事ができるのかを紹介していますのでそちらも是非ご覧いただけると幸いです!

関連記事はこちら

ブログの著者欄

中村 槙吾

GMOインターネットグループ株式会社

2017年よりGMOインターネットグループにて運用保守業務に従事。 H/W保守や障害対応などの傍らで、運用効率化の取り組みを行う。

採用情報

関連記事

KEYWORD

採用情報

SNS FOLLOW