Python×Selenium ブラウザ操作を自動化するには?

システム開発
このサイトはアフィリエイト広告を掲載しています。

この記事のレベル

難易度3.0
実用性4.5
学習コスト2.0
この記事でわかること
  • PythonとSeleniumでブラウザ操作を自動化する方法
  • 実際の自動操作サンプルコード
  • ブラウザ操作自動化の便利な活用例
takata
takata

この記事はこんな人におすすめ!

  • PythonでWebブラウザを操作する方法を学びたい方
  • 定型業務を効率化したい方

はじめに

毎日同じWeb操作を繰り返していて、「これ、自動でできたら楽なのに…」と思ったことはありませんか?

たとえば、検索、ログイン、クリックといったルーティン作業など…Pythonを使えば、こうしたブラウザ操作を簡単に自動化できます。

本記事では、PythonでSeleniumを使ってブラウザ検索を自動で行うサンプルコードをご紹介します。

毎日の「手間」を自動化することで、もっと効率的でスマートな働き方ができるようになります。
本記事がその第一歩になれば幸いです。

Selenium(セレニウム)ってなに?

Selenium(セレニウム)は、Webブラウザを自動操作するためのフレームワークです。
もともとはWebアプリのテスト自動化ツールとして開発されましたが、現在では業務効率化やデータ収集などにも幅広く使われています。

SeleniumはJava、C#、Pythonなど複数のプログラミング言語で利用できます。

この記事では、初心者でも扱いやすいPythonでSelenium使い、Webブラウザの操作を自動化する方法を紹介します。

takata
takata

フレームワークとは、「よく使う機能やしくみを、あらかじめまとめて用意してくれている土台のようなもの」です。

Seleniumで自動化できるルーティン作業例

Seleniumを使えば、「人がブラウザでやっている操作」はすべて自動化できます。一例として下記のような作業は容易に自動化することができます。

  • 勤怠打刻:勤怠システムにログインして「出勤」ボタンをクリック(毎朝実行)
  • 在庫確認:複数店舗の在庫情報ページを巡回して、在庫の有無をチェック
  • ECサイトの価格チェック:特定商品の価格を取得して、一定以下になったらアラート表示やメール送信

構築環境を準備しよう

ブラウザ操作の自動化コードを作成する前に、構築環境を準備する手順を紹介します。

「環境構築」と聞くと難しそうに感じるかもしれませんが、Pythonは無料で使えるうえ、インストールも数ステップで完了します。

あわせて、コードを試しながら書ける便利なツール「Jupyter Notebook」も導入します。

Jupyter Notebookは、Webブラウザ上でPythonコードを実行できるノート形式のツールです。
1行ずつ動かして結果を確認できるため、Seleniumのような試行錯誤が多いコードにはぴったりです。

ここでは、Windowsユーザー向けのセットアップ手順をご紹介します。

Pythonのインストール手順

1. Pythonをダウンロードする

  1. Python公式サイト にアクセス
  2. 上部メニューの「Downloads」にカーソルを合わせ、「Python 3.xx.x」をクリック
    ※表示されている最新版(3.x系)でOKです。

2. Pythonをインストールする

  1. ダウンロードされた python-3.xx.x-amd64.exe をダブルクリックしてインストーラを起動
  2. 最初の画面で2つのチェックボックスにチェックを入れたあと、「Install Now」 をクリック
    ※「このアプリがデバイスに変更を加えることを許可しますか?」と出たら「はい」をクリック
  3. 「Setup was successful」と表示されたらインストール完了。「Close」をクリックして終了

3. インストール確認をする

  1. 「コマンドプロンプト」を開き、次のコマンドを入力してEnter
    python -V
  2. 「Python 3.xx.x」と表示されれば、インストール成功です!

Jupyter Notebookのインストール手順

1. Jupyterをインストールする

  1. 「コマンドプロンプト」を開いたまま、次のコマンドを1行ずつ入力して実行
    pip install jupyter
    pip install notebook==6.5.7
  2. しばらく待って、またコマンド入力ができる状態になればインストール完了です

2. Jupyter Notebookを起動する

  1. 続けて以下のコマンドを入力します
    jupyter notebook
  2. 少しすると、ブラウザが自動的に開き、Jupyterの画面が表示されます
    ※ファイル一覧が表示されていればOKです。
  3. 終了する場合は、Jupyterの画面右上にある「Quit(または終了)」を押してから、ブラウザを閉じてください
補足メモ(初回起動時の注意)
  • 「UPDATE」の案内が表示されたら「Don’t show anymore」を押せばOKです。
  • 起動時に「ModuleNotFoundError: No module named ‘distutils’」と出た場合は、次のコマンドを実行してください。実行後にもう一度jupyter notebookを実行すれば起動できます。
    pip install setuptools

Seleniumを使った自動化コードの書き方を理解しよう

ここからは、実際にSeleniumでブラウザ操作を自動化するコードを書いていきます。

今回はサンプルとして、Yahoo! JAPANを開き、「プロ野球 結果」と検索し、表示された検索結果の中から「プロ野球 日程・結果 – スポーツナビ」というページを見つけて開くところまでを自動化してみましょう。

まずはコード全体を見てみよう

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time

# 1. Chromeブラウザを起動
browser = webdriver.Chrome()

# 2. Yahoo! JAPAN トップページにアクセス
browser.get("https://www.yahoo.co.jp/")
time.sleep(2)

# 3. 検索ボックスに「プロ野球 結果」と入力して検索
search_box = browser.find_element(By.NAME, "p")
search_box.send_keys("プロ野球 結果" + Keys.ENTER)
time.sleep(3)

# 4. 「プロ野球 日程・結果 - スポーツナビ」という記事タイトルのリンクをクリック
target_title = "プロ野球 日程・結果 - スポーツナビ"
links = browser.find_elements(By.CSS_SELECTOR, "a")

clicked = False
for link in links:
    if target_title in link.text:
        link.click()
        clicked = True
        break

if not clicked:
    print("指定のリンクが見つかりませんでした。")

# 5. ページが表示されたまま数秒待機
time.sleep(5)
takata
takata

上記のコードを実行すれば、ブラウザ操作が自動で行われます。

まずは実行し自動で動くことを確認してみてください。

このコードで何をしているのか?

このコードでは、次のような流れで操作を自動化しています。

  1. Chromeを立ち上げる
  2. Yahoo! JAPANのトップページにアクセス
  3. 「プロ野球 結果」と検索ボックスに入力してEnter
  4. 検索結果の中から「プロ野球 日程・結果 – スポーツナビ」というタイトルのリンクを見つけてクリック
  5. 表示されたページを5秒間開いたままにして終了

ステップごとに見てみよう

ブラウザを起動する

browser = webdriver.Chrome()

この1行で、Chromeブラウザが自動で立ち上がります。

サイトにアクセスする

browser.get("https://www.yahoo.co.jp/")

get() メソッドを使うと、指定したURLにブラウザでアクセスできます。今回はYahoo! JAPANのトップページにアクセスしています。

検索ボックスに文字を入力して検索する

search_box = browser.find_element(By.NAME, "p")
search_box.send_keys("プロ野球 結果" + Keys.ENTER)

Yahoo!の検索ボックスは name="p" になっているので、By.NAME で指定して要素を取得し、send_keys() で文字を入力します。最後に Keys.ENTER を付けることで、検索が実行されます。
※各要素の取得条件(今回はname)は、ブラウザの開発者ツールを利用して指定して下さい。

指定したタイトルのリンクをクリックする

target_title = "プロ野球 日程・結果 - スポーツナビ"
links = browser.find_elements(By.CSS_SELECTOR, "a")

clicked = False
for link in links:
    if target_title in link.text:
        link.click()
        clicked = True
        break

検索結果ページに表示されているすべてのリンク(a タグ)を取得し、ループで1つずつテキストを確認します。目的のタイトルが見つかればクリックします。

ページをしばらく表示する

time.sleep(5)

最後に5秒間そのページを表示した状態にして、動作確認ができるようにしています。自動化処理の中で、次の操作を待つ場合などにもよく使われる方法です。

まとめ

この記事では、PythonとSeleniumを使って、ブラウザ操作を自動で実行する方法を紹介しました。

具体的には、

  • PythonとJupyter Notebookのインストール方法
  • Seleniumの基本的な使い方
  • 実際にYahoo! JAPANで「プロ野球 結果」を検索し、目的のページにアクセスするサンプルコード
  • コードの構成や動きの解説

などを通じて、「人の代わりにブラウザ操作をしてくれる」Seleniumの力を実感いただけたのではないでしょうか。

最初はサンプルをマネするだけでもOK。コードを少しずつ自分の作業に合わせてカスタマイズしていくことで、あなた専用の“自動化ツール”が完成します。

ぜひ、今日紹介したコードを実行し、明日からの作業をもっと快適に、もっとスマートにしてみてください。

さらに学びたい方へ

「ワンランク上のビジネススキルを身につけたい」

そんな方に注目されているのが、オンライン学習サービスです。

中でも特におすすめなのが、人気の2大サービスSchoo(スクー) Udemy(ユーデミー) icon

特徴や違いを比較しながら、あなたに合った選び方をわかりやすく解説します。

SchooとUdemyの特徴は?

あなたに向いているのはSchoo?Udemy?

Schoo(スクー)がおすすめな人
  • まずは無料で試してみたい人
  • 月額定額で色んな講座を受けたい人
  • ビジネススキル全般を学びたい人
  • 隙間時間でスキルアップしたい人
\ Schooプレミアム 7日間お試し”無料” /

Udemy(ユーデミー)がおすすめな人
  • 講座単位で支払いをしたい人
  • 特定の知識・スキルを学びたい人
  • 学習の時間を集中的に確保できる人
\ 購入後30日以内であれば”返金可能” /

コメント