Python学院
メールマガジンバックナンバー

vol.21

  • コツ・知識
  • メールマガジン

PythonによるWebブラウザ自動操作の基本 ~Seleniumを活用する

今回のメルマガのテーマは
PythonによるWebブラウザ自動操作の基本 ~Seleniumを活用する」でございます。

「Web上からの情報収集自動化」と「Webブラウザの自動操作」ができるようになれば、業務自動化の幅が大きく広がります。

Pythonを学習している方、実務で活用している方の中でも、PythonでWebブラウザを自動で操作できることを知らない方が多いです。
この技術を使えば、例えばログインが必要な自社のWebシステムに自動でログインして操作を行うことができます。

Webブラウザの自動操作を行うためには、Pythonの便利なツールである「Selenium」というライブラリを使います。

当メルマガを通して、PythonによるWebブラウザの自動操作について理解し、是非業務自動化の幅を大きく広げていただければと思います!

「Web上からの情報収集自動化」の研修、記事のリンクはコチラ
研修:
Python学院~スクレイピング編/Webからの情報収集を自動化する(1日間)
Python学院~実践編/Excel操作とスクレイピングを組み合わせる(2日間)
記事:
https://www.insource.co.jp/python-gakuin/mail-backnumber/vol15.html


(約5分で読めます)

~~~~~~~~~目次~~~~~~~~~
1. Webブラウザの自動操作とは
2. Webブラウザの自動操作による業務自動化例
3. 簡単なPythonプログラムの解説
(1)事前準備
(2)Webブラウザ自動操作のプログラムを書いて、動かしてみよう!
4. 最後に
~~~~~~~~~~~~~~~~~~~~


1. Webブラウザの自動操作とは


文字通り、「Webブラウザを自動操作することができる技術」です。
Webブラウザ上で人間がマウスとキーボードを使ってできることは、Pythonから全て自動で行うことができます。
例えばログインが必要なWebサイトからデータの自動収集を行う場合、まずはログインをする必要があります。
ログインの際、多くの場合は「ログインID」と「パスワード」を入力することになります。



上記画像のログインフォームからPythonで自動ログインを行う場合、以下のような手順でプログラムを書きます。

1.「ID」の下の入力フォームをクリックする。
2.フォームにログインIDを入力する。
3.「パスワード」の下の入力フォームをクリックする。
4.フォームにパスワードを入力する。
5.「ログイン」のボタンを押す。

このように、人間がマウスとキーボードを使ってできることは、Pythonから全て自動で操作することができます。

多くの組織で、あるWebサイトから特定のデータの取得、また業務用のWebシステムに何かデータを登録するなど、Webサイトが絡んだ定型・単純業務が数多く存在します。それらについて、Pythonでプログラムを書けばほとんど全て自動化することが可能です。



2. Webブラウザの自動操作による業務自動化例


PythonでWebブラウザの自動操作を行うためには、Pythonの便利なツールである
「Selenium」というライブラリを使います。
Seleniumを使うことで、例えば以下のようなことができます。

●ボタンをクリック
●スクロール
●フォームに値を入力
●Webページ上のデータの自動収集
●スクリーンショットの撮影
●複数ある選択肢から、特定のチェックボックスをクリック
●Webページの遷移(一つ前に戻す、一つ前に進む)
●ウィンドウサイズの変更
●WebページのタイトルとURLの取得

より具体的に、以下のような業務を自動化することができます。

●自社システム上で指定のキーワードを検索し、表示される情報をCSVファイルに出力する
●ログインが必要な自社システム、もしくは外部のWebサイトから情報を収集する
●検索結果が1,000 件のサイト上の情報すべてを取得するために、自動でページ遷移のボタンをクリックする
●Excel で保存されている情報を、自社システムに転記する
●Webブラウザの画面をスクリーンショットでキャプチャし、
 画像ファイルをメールに貼り付けて送付する

様々な業務で、Webブラウザ自動操作の技術を活用することが可能です。この技術を使えるようになれば、例えば今まで毎日1時間かけて行っていた単純業務を、自動かつ1分で行うことができるかもしれません。
実際に弊社インソースでも、このWebブラウザ自動操作の技術を用いてWebサイトが絡んだあらゆる業務を自動化しております。


3. 簡単なPythonプログラムの解説


ここまで、PythonによるWebブラウザの自動操作についてご説明いたしました。
それでは、簡単なPythonプログラムを書いて、動かしてみましょう。

(1)事前準備

Webブラウザ自動操作のライブラリ「Selenium」を使いますが、プログラムを書く前にまずは事前準備を行う必要があります。

以下2点の準備が必要です。
a. Seleniumのインストール
b. Google Chromeのインストール

a. Seleniumのインストール
コマンドプロンプト、もしくはターミナル上で以下コマンドを入力し、実行しましょう。

pip install selenium

b. Google Chromeのインストール
インストールができていない場合、以下Google 公式サイトに記載の手順に沿ってダウンロードをお願いします
https://www.google.co.jp/chrome/


(2)Webブラウザ自動操作のプログラムを書いて、動かしてみよう!

それでは、Web ブラウザの自動操作を体験してみましょう。
ここでは、インソースHP https://www.insource.co.jp/bup/middle-schedule.htmlの検索フォームに値を入力し、検索を実行するというプログラムを書きます。



まず、Selenium のWebDriver を使えるように、以下コードを実行します。

from selenium import webdriver
from selenium.webdriver.common.by import By

次に、Webブラウザを起動するために以下のコードを実行します。

driver = webdriver.Chrome()

以下のようにWeb ブラウザが起動します。



「Chrome は自動テストソフトウェアによって制御されています。」と表示された Web ブラウザが起動しました。
それでは、インソースHP にアクセスします。

driver.get('https://www.insource.co.jp/bup/middle-schedule.html')

ここから、以下の手順で検索フォームに値を入力し、検索を行います。
a. 検索フォームの要素を特定する
b. 検索フォームの要素を取得する
c. 検索フォームに値を入力する
d. 検索を実行する

順にみていきます。

a. 検索フォームの要素を特定する

ここでは、開発者ツールを使って要素を特定します。

以下の手順で、要素を特定しましょう。
・F12 キーを押す
・開発者ツール左上の矢印マークをクリックします
・検索フォームの上にカーソルを持っていき、クリックします
これで、要素の特定ができました。

特定された要素を見ると、「input タグで、name の値がq」であることが分かります。 input タグやname については、ここでは特に理解する必要はありません。 要素の特定に使える情報だというぐらいの認識で問題ありません。

b. 検索フォームの要素を取得する

この項では要素を取得しますが、画面上に検索フォームが見えない場合はエラーになってしまいます。このエラーを防ぐため、今回は画面を最大化することで対応します。以下のコードを追加してください。

driver.maximize_window()

画面を最大化した後は、「xpath」というものを使って要素の取得します。

先程、要素を特定した際に「input タグで、name の値がq」であることが分かりました。 この要素は、もしかしたらHTML 内で他にも存在するかもしれません。 要素の取得方法には実は様々なものがありますが、今回は必ず要素を一意に特定できる 「xpath」を使います。

開発者ツールを開き、先程特定した要素の上で右クリックをし、 「Copy → Copy XPath」の順にボタンをクリックします。 これで、特定した要素のxpath をコピーすることができました。

それでは、このxpath を使い要素を取得してみましょう。 先程コピーしたxpath をメソッドの引数に入れて、以下のように書きます。

form = driver.find_element(By.XPATH, '//*[@id="search"]/div/input')

取得した要素は、変数「form」に格納しました。

c. 検索フォームに値を入力する

検索フォームに値を入力するには、以下のコードを書いて実行します。

form.send_keys('Python')

ここでは、検索フォームに「Python」の文字を入力しています。

取得した要素に対して「.send_keys()」メソッドを実行し、引数に入力したい値を入れます。 実行すると、以下のように検索フォームに値がセットされました。



d. 検索を実行する

最後に、検索を実行して検索結果を表示します。 フォームで検索を実行するには、要素に対して「.submit()」メソッドを実行します。

form.submit()

これで、検索を実行することができました。 以下のように検索結果の画面が表示されます。


最後に、WebDriver に対して「close()」メソッドを実行し、Web ブラウザを閉じましょう。

driver.close()

ここまで、Selenium を使ったブラウザの自動操作について説明をしました。

人間がブラウザ上で手動でできることは、基本的にSelenium でもできます。 ここでは簡単なプログラムしか紹介していませんが、他にも様々な使い方があります。 Selenium が使えるようになると業務自動化の幅が大きく広がります。

是非、興味があれば自分、もしくは自部署・自組織の業務効率化を、 ブラウザ自動操作によって実現してみてください。


4. 最後に


以上、PythonによるWebブラウザの自動操作について
ご説明いたしました。

この技術を使えるようになれば、業務自動化の幅を 大きく広げることができます。
弊社でも、この自動操作の技術は業務自動化の 至るところで活用しています。
この「Webブラウザの自動操作」は、「Web上からの情報収集自動化」 の技術と組み合わせることで、更に効果を発揮します。

PythonによるWebブラウザの自動操作に興味を持った方はコチラ
Python学院~スクレイピング編/Webからの情報収集を自動化する(1日間)
Python学院~実践編/Excel操作とスクレイピングを組み合わせる(2日間)
Python学院~社内システムの情報を活用して効率的に資料を作る(3日間)


関連研修