こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!
- 面倒なブラウザ操作を自動化したい
- PythonとSeleniumを活用して自動ログイン機能を実装する方法が知りたい
【Python】Selenium(セレニウム)とは
Seleniumとは、Webブラウザを起動し操作自動化を実現できるPythonモジュールです。Seleniumを用いると、例えばブラウザ上のフォーム記入、マウスクリック、ブラウザ画面遷移という操作が自動化可能です。
Seleniumの概要や基礎的なコーディング方法についてはこちらの記事で詳しく解説しています。
【Python】Seleniumとは?Webブラウザ操作の自動化方法を徹底解説
PythonでWebブラウザの自動操作を実現したい方向けに「Seleniumの概要」「Seleniumの利用手順」について詳しく解説します。
【参考】Selenium学習におすすめの教材
Seleniumによるブラウザ操作について詳しく学習したい方向けにおすすめの教材をご紹介します。
Seleniumでできること
Seleniumを用いたWebブラウザ自動操作により、次のようなことが実現できるようになります。ここでは代表的な「Webブラウザの自動操作」「Webスクレイピング」「テスト自動化」について言及します。
Webブラウザの自動操作
ブラウザ自動操作とは、人間が行う手動操作(検索・入力操作等)をSeleniumによって直接的に実行することを指します。
例えば、次のような操作の自動化検討に際してSeleniumの活用が期待されます。
- Webサイトのフォームを記入する
- 会員サイトにログインしてデータを取得する
- Webサイトからデータをダウンロードする
- 複数サイトを横断しモニタリング(画面キャプチャなど)する
Webスクレイピング
Webスクレイピング(Web Scraping)とは、WebサイトのHTMLからデータを抽出する技術を指します。スクレイピング、Webスクレイピングの他に、Webデータ抽出、データスクレイピング、ウェブ・クローラー、ウェブ・スパイダー等と呼ばれることもあります。
Seleniumは、RequestsやBeautiful Soupのように、Webスクレイピングモジュールとしても活用が可能です。ただしSeleniumの場合、Webブラウザを起動するため、スクレイピング完了に至るまでの処理速度が遅いという課題もあります。
単純なWebスクレイピングであれば、RequestsやBeautiful Soupを活用し、動的なサイトやログインが必要な会員サイトからのWebスクレイピングであればSeleniumを活用するのがおすすめです。
テスト自動化
ITエンジニア向けとして、開発直後のシステムやWebアプリのテストにSeleniumを活用することもできます。例えば、次のような動作テストの自動化には最適と言えます。
- 入力フォームが正しく入力できるか確認する入力テスト
- ボタンクリックが正しく機能するか確認する画面遷移テスト
- 記録としてWebアプリの画面キャプチャを自動出力する
【初期設定】Python環境でSeleniumを利用できるようにする
SeleniumモジュールをPython環境で利用するためには、いくつか初期設定が必要になります。以下に示す環境設定に対応しましょう。
Seleniumモジュールのインストール
Seleniumモジュールをpipコマンドを用いてインストールしましょう。
pip install selenium
Webドライバーのインストール
SeleniumによるWebブラウザの操作では、専用のWebドライバーが必要になります。例えば、WebブラウザにChromeを用いる場合はChromeドライバー、Firefoxを用いる場合はGeckoドライバーが必要です。
本記事ではChromeドライバーを用いた操作方法を言及するため、Chromeドライバーのダウンロード手順を示します。
Windowsの場合
Web Driver for Chromeにアクセスし、Chromeドライバーをダウンロードします。
Chromeドライバーは、お手元のChromeのバージョンと同じものをダウンロードしましょう。
Macの場合
Homebrewを用いてChromeドライバーをダウンロードできます。ターミナルを開き、以下のコマンドを実行しましょう。
brew install chromedriver
Selenium動作チェック
SeleniumモジュールおよびWebドライバーのダウンロードが完了したら、Python環境で動作確認を行います。
以下のコードを実行した際、ブラウザが起動しGoogleページが表示されれば動作確認完了です。
# Selenium
from selenium import webdriver
# Chrome Driver
from webdriver_manager.chrome import ChromeDriverManager
# ブラウザインスタンス
browser = webdriver.Chrome(ChromeDriverManager().install())
# リンクを開く
browser.get("https://www.google.co.jp/")
【実践】PythonとSeleniumをもとに自動ログイン機能を作成
PythonとSeleniumを用いて自動ログイン機能を実装する方法について解説します。今回は例として、Yahoo Japanアカウントにログインする方法を解説します。この方法をマスターすることで、他のログインページでも応用できる内容となっております。
ライブラリ読込
Pythonライブラリを読み込みます。冒頭で以下のコードを実行しておきましょう。
# Selenium
from selenium import webdriver
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.keys import Keys
# Chrome Driver
from webdriver_manager.chrome import ChromeDriverManager
# 待機時間
from time import sleep
# ブラウザインスタンス
browser = webdriver.Chrome(ChromeDriverManager().install())
Selenium画面遷移|対象リンクに画面遷移
Yahoo Japanのログイン画面に遷移するコードを以下に示します。コード実行後、Yahoo Japan画面が表示されることを確認しましょう。
# Yahoo Japan URL
URL = "https://login.yahoo.co.jp/config/login"
# URLを開く
browser.get(URL)
Seleniumテキスト入力|ユーザー名
Seleniumによるブラウザ操作コードを記述する場合、HTML要素の指定、要素へのアクションという順で記述します。Yahoo Japan ユーザー名が入力できる要素は、ブラウザのコンソールオブジェクトから確認できます。
上記で確認した要素を用いて以下のコードを実行してみましょう!
# 要素を選択
username = browser.find_element_by_id("username")
# 【要修正】入力テキスト(ユーザー名)
text_username = "AAAAAAAAAA"
# 要素アクション
username.send_keys(text_username)
Seleniumボタンクリック|次へ
ユーザー名入力操作後、「次へ」ボタンをクリックする操作を記述します。
# 要素を選択
next_btn = browser.find_element_by_id("btnNext")
# 要素アクション
next_btn.click()
# 待機時間
sleep(2)
Seleniumテキスト入力|パスワード
パスワードが入力可能なテキスト要素を指定し、パスワードを入力する操作を記述します。
# 要素を選択
password = browser.find_element_by_id("passwd")
# 【要修正】入力テキスト(パスワード)
text_password = "abcdefg"
# 要素アクション
password = password.send_keys(text_password)
Seleniumボタンクリック|ログイン
最後に、ログインボタンを押下するコードを記述します。
# 要素を選択
login_btn = browser.find_element_by_id("btnSubmit")
# 要素アクション
login_btn.click()
# 待機時間
sleep(2)
【Python】Seleniumによるログイン操作コード全量
今回紹介したYahoo Japanアカウントへのログイン操作コードを全て以下に記載します。本記事で学習した内容をもとに、お好みのログイン画面でのブラウザ自動操作を実現してみましょう。
# Selenium
from selenium import webdriver
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.keys import Keys
# Chrome Driver
from webdriver_manager.chrome import ChromeDriverManager
# 待機時間
from time import sleep
# =======================================================================
# 【要編集】入力項目
# =======================================================================
# 対象リンク
URL = "https://login.yahoo.co.jp/config/login"
# 入力テキスト(ユーザー名)
text_username = "AAAAAAAAAA"
# 入力テキスト(パスワード)
text_password = "abcdefg"
# =======================================================================
# ブラウザ操作
# =======================================================================
# ブラウザインスタンス
browser = webdriver.Chrome(ChromeDriverManager().install())
# URLを開く
browser.get(URL)
# 要素を選択
username = browser.find_element_by_id("username")
# 要素アクション
username.send_keys(text_username)
# 要素を選択
next_btn = browser.find_element_by_id("btnNext")
# 要素アクション
next_btn.click()
# 待機時間
sleep(2)
# 要素を選択
password = browser.find_element_by_id("passwd")
# 要素アクション
password = password.send_keys(text_password)
# 要素を選択
login_btn = browser.find_element_by_id("btnSubmit")
# 要素アクション
login_btn.click()
# 待機時間
sleep(2)
【参考】Python×Selenium関連記事
当サイトでは、Seleniumに関する記事を多数配信しております。
【参考】Pythonで面倒な作業を自動化!手法一挙公開中!
当サイトでは日々面倒な作業をPythonで自動化する方法を多数配信しております。日々の作業が飛躍的効率化できること間違いなしですので、以下気になった記事があれば併せてご覧ください。
【面倒なタスクをPythonで解決!】作業効率化の人気記事一覧
【参考】Pythonとは?・実現できること
最後に
お問い合わせフォーム
上記課題に向けてご気軽にご相談下さい。
お問い合わせはこちら