目的
銀行口座の預金残高を確認したい。
でも毎回サイトにアクセスしてログインID、パスワードを入力するのが面倒くさい。(そんなことするくらいなら確認しない。)
家計簿アプリに口座情報を連携するのも一つの方法だけど、データをローカルにためて後で自由に分析したい。
そんな自分のニーズを満たすため、 pythonを使って銀行口座にアクセスし、データを取得するスクリプトを書いてみます。
開発環境
- OS Windows10
- ツール Anaconda3(python3)
selenium のインストール
seleniumはブラウザを自動操作できるライブラリです。今回はseleniumを使用してブラウザ経由で自分の口座にアクセスしたいと思います。
Anacondaのインストール時に一緒に用意されるAnaconda promptを開いて、以下を実行し、seleniumをインストールします。
pip install selenium
Chrome Driverをインストールする
次にブラウザ側の必要ツールです。今回はブラウザとしてChromeを使用したいと思います。
seleniumからchromeを自動操作して口座にアクセスする流れです。そのためには、Chrome Driverが必要になります。
以下の手順でインストールします。
- Chromeを立ちあげ、右側のメニュー(・3つのやつ)→ヘルプ→Google Chromeについてを開く
- Chromeの Chromeのバージョンを確認する
- Chromeバージョンに対応したドライバをインストールする
- インストールしたドライバを適当なディレクトへ移す。
Pythonスクリプト
以下のようなコードで動かせました。
from selenium import webdriver print('please input password') url = <口座サイトURL> driver = webdriver.Chrome(executable_path=<ドライバPATH>\\chromedriver.exe") driver.get(url) id = <あなたのログインID> psswd = <あなたのパスワード> #ID入力(サイト毎に要素は適宜変更する) search_box = driver.find_element_by_name("ID_NO").send_keys(id) #パスワード入力(サイト毎に要素は適宜変更する) search_box = driver.find_element_by_name("PASSWORD").send_keys(psswd) #ログイン実行(サイト毎に要素は適宜変更する) search_box = driver.find_element_by_class_name("buttons").click() print('login success') #残高の値取得(サイト毎に要素は適宜変更する) balance = driver.find_element_by_class_name("number").text #残高表示 print('口座残高は',balance) #ドライバ終了 driver.quit()
注意点
上記の例ではパスワードを毎回入力する対話式になっています。
もしパスワードをソースコードへ直接記述したい場合はAESによる暗号化などと組み合わせて平文は書かないようにするほうがセキュリティ的にはおすすめです。