【Python】銀行口座情報の自動取得

目的

銀行口座の預金残高を確認したい。
でも毎回サイトにアクセスしてログインID、パスワードを入力するのが面倒くさい。(そんなことするくらいなら確認しない。)
家計簿アプリに口座情報を連携するのも一つの方法だけど、データをローカルにためて後で自由に分析したい。
そんな自分のニーズを満たすため、 pythonを使って銀行口座にアクセスし、データを取得するスクリプトを書いてみます。

開発環境

  • OS  Windows10
  • ツール Anaconda3(python3)

selenium のインストール

seleniumはブラウザを自動操作できるライブラリです。今回はseleniumを使用してブラウザ経由で自分の口座にアクセスしたいと思います。

Anacondaのインストール時に一緒に用意されるAnaconda promptを開いて、以下を実行し、seleniumをインストールします。

pip install selenium

Chrome Driverをインストールする

次にブラウザ側の必要ツールです。今回はブラウザとしてChromeを使用したいと思います。

seleniumからchromeを自動操作して口座にアクセスする流れです。そのためには、Chrome Driverが必要になります。

以下の手順でインストールします。

  1. Chromeを立ちあげ、右側のメニュー(・3つのやつ)→ヘルプ→Google Chromeについてを開く
  2. Chromeの Chromeのバージョンを確認する
  3. Chromeバージョンに対応したドライバをインストールする
  4. インストールしたドライバを適当なディレクトへ移す。

Pythonスクリプト

以下のようなコードで動かせました。

from selenium import webdriver

print('please input password')
url = <&#21475;&#24231;&#12469;&#12452;&#12488;URL>
driver = webdriver.Chrome(executable_path=<&#12489;&#12521;&#12452;&#12496;PATH>\\chromedriver.exe")
driver.get(url)

id = <&#12354;&#12394;&#12383;&#12398;&#12525;&#12464;&#12452;&#12531;ID>
psswd  = <&#12354;&#12394;&#12383;&#12398;&#12497;&#12473;&#12527;&#12540;&#12489;>

#ID&#20837;&#21147;(&#12469;&#12452;&#12488;&#27598;&#12395;&#35201;&#32032;&#12399;&#36969;&#23452;&#22793;&#26356;&#12377;&#12427;)
search_box = driver.find_element_by_name("ID_NO").send_keys(id)

#&#12497;&#12473;&#12527;&#12540;&#12489;&#20837;&#21147;(&#12469;&#12452;&#12488;&#27598;&#12395;&#35201;&#32032;&#12399;&#36969;&#23452;&#22793;&#26356;&#12377;&#12427;)
search_box = driver.find_element_by_name("PASSWORD").send_keys(psswd)

#&#12525;&#12464;&#12452;&#12531;&#23455;&#34892;(&#12469;&#12452;&#12488;&#27598;&#12395;&#35201;&#32032;&#12399;&#36969;&#23452;&#22793;&#26356;&#12377;&#12427;)
search_box = driver.find_element_by_class_name("buttons").click()
print('login success')

#&#27531;&#39640;&#12398;&#20516;&#21462;&#24471;(&#12469;&#12452;&#12488;&#27598;&#12395;&#35201;&#32032;&#12399;&#36969;&#23452;&#22793;&#26356;&#12377;&#12427;)
balance = driver.find_element_by_class_name("number").text

#&#27531;&#39640;&#34920;&#31034;
print('&#21475;&#24231;&#27531;&#39640;&#12399;',balance)

#&#12489;&#12521;&#12452;&#12496;&#32066;&#20102;
driver.quit()

注意点

上記の例ではパスワードを毎回入力する対話式になっています。
もしパスワードをソースコードへ直接記述したい場合はAESによる暗号化などと組み合わせて平文は書かないようにするほうがセキュリティ的にはおすすめです。

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です