【RPA】Pythonで自動予約システムとLINE通知を作ってみよう

【RPA】Pythonで自動予約システムとLINE通知を作ってみよう

【はじめに。RPAとは何か?】

自動予約システムなど自動化の仕組みなどを総称してRPAと呼ぶことがるので、本題に入る前に、RPAとは何かについて簡単に説明しておきます。Robotic Process Automationの略で事務系の定型作業を自動化するツールのことです。データ収集や項目入力作業などルーティン化された作業を自動化することで人為的ミスの予防に役立ち、生産性の向上が見込めます。AIとは異なり、システム側で考えることはなくあくまでプログラミングされた通りの動きをすることが特徴です。

代表的なRPAツールとしては下記のようなものがありますが、簡単なものであればPythonで自作することも可能です。今回はPythonで予約を自動化してみます。

代表的なRPAツール

UiPath(世界シェアNo.1を誇るRPAツール)
WinActor(NTTデータの純国産RPAツール)
Robotic Crowd(クラウド型RPAの代表といえるRPAツール)
ロボパットDX(現場スタッフだけで操作できる現場型RPA)

【Pythonで自動予約を作る】

Pythonは、科学技術計算や機械学習のためだけでなく、WEB操作の自動化にも使える便利なプログラミング言語です。みなさんの日々の業務効率化にも役立つ可能性がありますので、興味がある方は勉強してみてはいかがでしょうか?

POINT

PythonにWeb予約を任せるとは、Web予約の際に人がマニュアルで行っている操作を、プログラミングにより、コンピューター(機械)に代替させることです。
次の4つのステップで構成されます。

【Pythonで自動予約を行う流れ】

  • STEP.01

    実行
    schedで指定した日時にプログラムを実行させる
  • STEP.02

    ログイン
    SeleniumでWEB予約サイトに機械がログイン
  • STEP.03

    自動入力
    Seleniumで予約に必要な情報の入力&選択を行う
  • STEP.04

    結果通知
    Line notifyで結果の通知を行う

【各ステップの具体的な内容】

① 指定した日時にプログラムを実行させる

最初に紹介するのは「sched」です。schedは指定した日時にプログラム実行をしてくれるイベントスケジューラーのモジュールです。朝早い時間帯に予約が必要な場合でも、schedを用いることで自動予約が可能になります。

② WEB予約サイトに機械が入る

Seleniumはブラウザ操作を自動化するためのソフトウエアです。Google ChromeやFirefoxなどブラウザに対応しています。サイトにログインした上で、日時やコースを選択するなどの操作を機会に代替してもらいます。Google社が提供するreCAPTCHA(リキャプチャ)などのボット対策がされているサイトは実行が難しいです。

③ 予約に必要な情報の入力&選択を行う

ログインした後は、所定の操作で予約の処理を進めていくことになります。Seleniumを用いて次の3つの操作ができるようになれば、基本的なブラウザ操作の自動化はできるようになります。

POINT操作したいエレメント(HTMLの文章を構成する要素)を指定する
テキスト入力を行う … ユーザーIDやパスワードの入力や数量の指定など
ボタンを押す … 「次」や「OK」などのボタン

④ 申込結果をLINEで送る

LINE notifyを用いることで予約結果を自動で通知することができます。LINE notifyを使うためには、アクセストークンを発行すればいいだけなので、誰でも簡単に使えます。Python上でも5~6行程度で実装できます。

POINT指定時間にプログラムが正常に起動したことを伝えるメッセージ
ログインに成功したことを伝えるメッセージ
空き時間の有無を伝えるメッセージ
予約完了時の画面キャプチャの添付

どれくらい詳細に作り込むかにもよりますが、約3-4時間程度で完成すると思います。

【実際にやってみよう】

① 指定した日時にプログラムを実行させる

② WEB予約サイトに機械が入る

③ 予約に必要な情報の入力&選択を行う

④ 申込結果をLINEで送る

参考サイト
https://parallelcareerlab.com/?p=1587

よくあるエラーについて

SyntaxError: Non-ASCII character ‘\xe3’ in file /Users/username/Documents/hello.py on line 1, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details
文字コードが認識できていないので下記を追記する
# -*- coding: utf-8 -*-

ModuleNotFoundError: No module named ‘requests’は、requestsという名前のモジュールがない、というエラーです。
requestsはスクレイピングでよく使われるライブラリーですが、標準ライブラリーではないため上記のようにインストールが必要です。
requestsは、pypi.orgで公開されているライブラリーです。
pypi.orgで公開されているライブラリーは、上記のようにpipコマンドでインストールできます。

pip は Python2.7.9、または Python3.4 以上のバージョンでは一緒にインストールされますが、それ以下のバージョンではインストールされません。
下記でpythonのバージョン確認
python -V
python3 -V

pipのインストール
ターミナルで
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
移動方法はMacですとターミナルを起動し、ターミナルに下記を入力します。
cd Desktop
macの場合のインストール
python get-pip.py
以下でバージョンが表示されたら完了
pip -V
pipのインストールが完了したら下記でrequestsのライブラリを読み込みます。
pip install requests

ModuleNotFoundError: No module named ‘selenium’
seleniumのインストール
pip3 install selenium

Top