Seleniumのインストールをしてみよう
このチュートリアルの概要
このチュートリアルでは、ブラウザ自動操作ライブラリである、Seleniumを利用して、ブラウザ自動操作を行う方法について解説します。
このチュートリアルをやる前に学習が必要なこと
このチュートリアルをやる前に、
- スクレイピングの基礎
- UNIXコマンドを利用したファイル操作
- が理解できていることが望ましいですので、以下のチュートリアルをやってみてください。
学習の手順
このチュートリアルでは、以下の順序で学習していきます。
- Seleniumとは何か理解する
- クラウド開発環境とは何かを理解する
- AWS Cloud9の会員登録
- AWS Cloud9で、新規プロジェクトの作成
- AWS Cloud9でSeleniumが使える、環境構築
- AWS Cloud9上で、Seleniumを動かす
チュートリアル動画も作成したので、こちらをみながら進めていただくとさらに理解しやすいです。
Seleniumとは?
このチュートリアルで学習する前に、まずはSeleniumについて理解していきましょう。
Seleniumは、ブラウザ操作を自動化できるライブラリとなります。
今までのスクレイピングは、
- HTMLのURLを指定
- HTMLを取得
- 一部の中身を整形して出力する
と言った操作がメインだったかと思います。
対して、Seleniumは、仮想のブラウザ(今回の場合はGoogle Chrome)を、プログラム経由で自動で動かしていくことになります。
Seleniumを起動させる上で、3つのツールをインストールする必要があります。
- ブラウザ:今回の場合だと、Google Chrome
- Webdriver: Google Chromeをブラウザ上で操作するためのツールです。今回の場合だとchromedriverをインストールします。
- Selenium: プログラムでブラウザを操作するためのライブラリです。
これらのインストールを最初に行い、後からコードを書いていきます。
クラウド開発環境 AWS Cloud9とは?
さて、今回はSeleniumを起動するために、クラウド開発環境であるAWS Cloud9を利用します。
一般的に、プロのエンジニアがプログラミングを行う場合、MacやWindowsなどの手元もPCに構築することが多いです。
一方で、開発環境の構築は、かなり初心者がつまづきやすいのが特徴です。開発環境が簡単にセットアップできるクラウド開発環境を利用していきます。
AWS Cloud9は基本的には無料で扱えますが、クレジットカードの登録が必要になります。
さっそくAWS Cloud9に登録していきましょう。
AWS Cloud9の会員登録+プロジェクトの作成
プロジェクトを作成します。利用はほとんど無料で行うことができます。詳しくは下記サイトをご覧ください。
https://aws.amazon.com/jp/cloud9/
コンソールにサインインをクリックすると、ログイン画面になります。
こちらから、ログインしてください。
ログイン後、こちらのURLをクリックしてください。
https://us-west-2.console.aws.amazon.com/cloud9/home
Create Environmentをクリックします。
その後、以下の情報を記入します。
- Name:Selenium Project
- Description:記入しなくてOK
終わったら、Next Stepをクリックします。
以下のように設定してください。
- Environment type: Create a new instance for environment (EC2)
- Instance type:t2.micro (1 GiB RAM + 1 vCPU)
- Platform:Ubuntu Server 18.04 LTS
- Cost-saving setting: After 30 minutes
これができたら、Next Stepをクリックしてください。
クリックすると、確認画面になるので、最後にCreate Environmentをクリックします。
そうすると、だいたい1-2分ほどで環境構築がおわるので、それまで待機します。
プロジェクトの作成
プロジェクトフォルダの作成を行います。
ターミナルを選択します。
Google Chromeのインストール
Google Chromeのインストールを行います。
まずはGoogle Chromeのパッケージが配布されているURLに対して、ダウンロードを行うコマンドwgetを使い、データをダウンロードします。
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb #google chromeのパッケージをダウンロード
次に、ダウンロードしたファイルをインストールします。
sudo dpkg -i google-chrome-stable_current_amd64.deb #debパッケージをインストールするコマンド
この際、以下のようなエラーが生じる場合があります。
dpkg: error processing package google-chrome-stable (--install):
dependency problems - leaving unconfigured
Processing triggers for mime-support (3.60ubuntu1) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
Errors were encountered while processing:
google-chrome-stable
この場合は、このパッケージを動かすために必要な依存関係のライブラリが壊れている可能性があります。
そのため、このエラーが生じた場合は、以下のコマンドを実行してください。
sudo apt-get install -f #依存関係が壊れたコマンドをインストールする
完了した際には、以下のような文言が出てくると思うので、見てみてください。
次に、Google Chromeのインストールを行います。
sudo dpkg -i google-chrome-stable_current_amd64.deb #debパッケージをインストールするコマンド
これで、Google Chromeのインストールが完了します。
$ sudo dpkg -i google-chrome-stable_current_amd64.deb
(Reading database ... 118687 files and directories currently installed.)
Preparing to unpack google-chrome-stable_current_amd64.deb ...
Unpacking google-chrome-stable (89.0.4389.82-1) over (89.0.4389.82-1) ...
Setting up google-chrome-stable (89.0.4389.82-1) ...
Processing triggers for mime-support (3.60ubuntu1) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
上記のバージョン(今回の場合だと、Ver 81.0)のChrome Driverをインストールします。
Chrome Driverのインストール
こちらのサイトから、Chrome DriverのURLを確認します。
この時、上記のVerに合致しているものを選びましょう。
https://chromedriver.chromium.org/downloads
Linux版のChrome Driverをダウンロードするために、右クリックで指定されたzipファイルのURLをコピーします。
こんな感じのURLになるはずです。
https://chromedriver.storage.googleapis.com/81.0.4044.138/chromedriver_linux64.zip
その後、以下のコマンドのようにファイルをダウンロードします。ZIPファイルなので、解凍してください。
wget https://chromedriver.storage.googleapis.com/80.0.3987.106/chromedriver_linux64.zip
unzip chromedriver_linux64.zip
wgetは、ファイルダウンロードを行うときのコマンド、unzipはZIPで圧縮されているファイルを解凍するときにコマンドです。
Seleniumのインストール
最後に、Seleniumをインストールしてください。
sudo pip install selenium
これで、準備が完了しました。
Googleの検索結果をスクショする
実際に、こちらのサイトにアクセスして、その画面のスクショを保存してみましょう!
New Fileを選択し、以下のコードを貼り付けます。
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.add_argument('--headless') #--headlessオプションは、ブラウザを画面上で表示しないで実行するためのものです。
driver = webdriver.Chrome('./chromedriver', chrome_options=options) #chromedriverのパスを指定します。 ./で現在のディレクトリの中身を指定します
driver.get("https://code.dividable.net") # 指定したURLのサイトにアクセスします。
driver.save_screenshot('screenshot.png') # アクセスしたサイトのスクリーンショットを、screenshot.pngとして保存します。
driver.quit() # ブラウザを閉じます
CTRL + S (Macの場合は、Command + S)を押して、ファイルをセーブします。
test.pyという名前で保存します。
実行してみよう
最後に、ファイルを実行してみます。
python test.py
実行すると、以下のような画像が新しく表示されるかと思います。
こちらの画像をクリックしてみると、
しっかりと、ページにアクセスして、スクリーンショットをとっていることが確認できました。
最後に
いかがでしたでしょうか?
Seleniumの環境構築から、簡単なブラウザ操作自動化について解説しました。
次のレッスンでは、早速Seleniumを利用したスクレイピングを行っていきたいと思います。
このチュートリアルはこれで終了です。