どうもイトサル(@itosaru)です。

単純なWEB作業を自動化したいです。何かいい方法はないでしょうか?
このようなお悩みを解決します。
単純作業って面倒ですよね。
定期的にファイルをダウンロードしたり、はたまた画面機能を動かすためにクリックしたり・・・
一か月に数回ならまだしも、一日一回やる必要があるようなものはなるべく自動化したいものです。
私も毎日ブラウザを使ってやらなくてはいけない単純作業があったので、Pythonとseleniumを使って単純作業を自動化しました。
この記事ではそのseleniumについて説明していきます。
seleniumとはブラウザを自動操作するための部品
seleniumとはブラウザを自動的に操作するためのライブラリ(プログラムの部品)です。
もともとはwebアプリケーションのテストツールとして開発されたものですが、その機能ゆえにブラウザ操作の自動化にも使われています。
seleniumはブラウザ操作に必要なツールであるwebドライバーに指示を出すことでブラウザを操作します。
webドライバーへの指示はプログラムを書いて実装します。
言い換えればseleniumを使うためにはプログラミングをする必要があるということです。
Q. RPAツールのほうが作るの楽じゃないの?
Microsoftから提供されている「Power Automate Desktop」を使えばプログラムを書かずとも、ブラウザを操作することは可能です。

もっと言ってしまえばブラウザだけでなく、PC操作全般が自動化できます。
しかし「Power Automate Desktop」の自動操作中は端末の操作ができなくなります。
seleniumの自動操作はバックグラウンドで実行することができるため、自動操作中であっても端末の操作が可能です。
そのためブラウザだけの自動操作に限るものであればseleniumを使うのが正解です。
seleniumのインストール
seleniumをインストールする前にまずPythonをインストールしましょう。
Pythonのインストール方法についてはこちらの「Pythonをインストールする」をご覧ください。
※すでにPythonをインストールしている場合はスキップして大丈夫です。

seleniumのインストールにはOSのターミナルコマンドを使います。
OSによって起動するソフトが異なるので自分が使っている端末にあったものを開きましょう。
- Windowsの場合: コマンドプロンプト
- macの場合: ターミナル
ソフトを開いたら下のコマンドを入力します。
pip install selenium
続いてwebドライバーを使うためのwebdriver_managerをインストールします。
pip install webdriver_manager
seleniumとwebdriver_managerの2つをインストールしたらプログラムを書く準備は完了です。
seleniumの使い方
seleniumは2つのステップをプログラムで書くことで使用できます。
- 操作したいWEBページ上の要素を取得する
- 取得した要素に操作の指示を出す
Javascriptを書いたことがあることであれば何となくイメージできるでしょうか。
やることはDOMを指定して、そのDOMに指示を出すということです。
①操作したいWEBページ上の要素を取得する
まずは要素の取得方法です。
seleniumは4つの方法で操作する要素を取得することできます。
取得方法 | 説明 |
---|---|
TAG_NAME | HTMLのタグを指定する |
ID | HTMLのIDを指定する |
CLASS_NAME | HTMLのClassを指定する |
XPATH | HTMLのDOMの階層を指定する |
➁取得した要素に操作の指示を出す
要素を取得したら指示を出します。
指示はクリックとキー入力だけ覚えておけば十分だと思います。
指示(メソッド) | 説明 |
---|---|
click() | クリックする |
send_keys() | キー入力する |
試しにGoogleで「Python」と検索してみる
サンプルとしてGoogleで「Python」と検索するプログラムを書いてみましょう。
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
# webドライバーをインストールして起動する
with webdriver.Chrome(service=Service(ChromeDriverManager().install())) as driver:
#googleのトップページを開く
driver.get("https://www.google.com/?hl=ja")
#検索ボックスをタグ(inputタグ)して要素を取得する
input_tag = driver.find_element(by=By.TAG_NAME, value="input")
#取得した検索ボックス要素に「Pyhon」のキー入力をする
input_tag.send_keys("Python")
#取得した検索ボックスに「Enter」キーを入力して検索する
input_tag.send_keys(Keys.ENTER)
#自動的にブラウザを閉じるためinput()で処理を止める
input()
プログラムのコードについて補足します。
seleniumでのブラウザ起動はwith構文で行っています。
with構文で起動させることでブラウザの起動と終了をセットで実装できるためです。
また、このプログラムはブラウザをChromeで立ち上げるようにしています。
webドライバーはChrome以外もありますので、自分の好きなブラウザで起動することができます。
webドライバーがあるブラウザ | 使用するインポート文 | webドライバーの起動 |
---|---|---|
Google Chrome | from webdriver_manager.chrome import ChromeDriverManager | with webdriver.Chrome(service=Service(ChromeDriverManager().install())) as driver: |
Microsoft Edge | from webdriver_manager.microsoft import EdgeChromiumDriverManager | with webdriver.Edge(service=Service(EdgeChromiumDriverManager().install())) as driver: |
Internet Explorer | from webdriver_manager.microsoft import IEDriverManager | with webdriver.Ie(service=Service(IEDriverManager().install())) as driver: |
Mozilla Fire Fox | from webdriver_manager.firefox import GeckoDriverManager | with webdriver.Firefox(service=Service(executable_path=GeckoDriverManager().install())) as driver: |
また、このプログラムは動作確認のためにブラウザ画面が立ち上がりますが、ヘッドレスモードというブラウザ画面を立ち上げずに操作するオプションがあります。
ヘッドレスモードで立ち上げるためのコードはこちらです。
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
#ヘッドレスモードで起動するためのオプションをインポートする
from selenium.webdriver.chrome.options import Options
#オプションを定義する
options = Options()
options.add_argument('--headless')
# webドライバーをインストールして起動する
with webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options) as driver:
#googleのトップページを開く
driver.get("https://www.google.com/?hl=ja")
#検索ボックスをタグ(inputタグ)して要素を取得する
input_tag = driver.find_element(by=By.TAG_NAME, value="input")
#取得した検索ボックス要素に「Pyhon」のキー入力をする
input_tag.send_keys("Python")
#取得した検索ボックスに「Enter」キーを入力して検索する
input_tag.send_keys(Keys.ENTER)
#自動的にブラウザを閉じるためinput()で処理を止める
input()
まとめ
今回はseleniumの概要と簡単な使い方について説明しました。
改めてseleniumでブラウザを使うために必要な2ステップについて振り返ります。
- 操作したいWEBページ上の要素を取得する
- 取得した要素に操作の指示を出す
考えずともできるWEB作業はすべてseleniumにやらせちゃいましょう!
selenium学習におすすめな本
seleniumについてちゃんと勉強したい!
という方は「スクレイピング・ハッキング・ラボ Pythonで自動化する未来型生活」がおススメ!
Pythonの基本的な使い方をはじめ、seleniumでの自動操作、そしてスクレイピングについて学ぶことができます。
スクレイピングとはWEBページの情報を取得してデータとして出力すること。
例えばニュースサイトのニュースページ情報を取得する、といったことができるようになります。
seleniumが真価を発揮するのはスクレイピングなので、合わせて勉強しちゃいましょう!
コメント