三菱東京UFJダイレクトのページの操作を自動化して、口座残高を調べる
家計簿アプリ自給自足の一環。今日はブラウザ操作を自動化して、口座残高を調べます。VISA デビッドをつかったらメールが来るように設定しているので、最終的にそれをハンドリングして、口座残高を LINE とかに通知したい。
こんなかんじの Python のスクリプトを書きました。三菱東京UFJダイレクトのページにログインして、口座残高が書かれた要素を調べます。ブラウザは PhantomJS, 自動操作には WebDriver (Selenium2) を使うので、事前に PhantomJS と pip で selenium パッケージをインストールしておきます。
# -*- coding: utf-8 -*- import os import time from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions from selenium.common.exceptions import TimeoutException def get_amount(): MUFG_URL = 'https://entry11.bk.mufg.jp/ibg/dfw/APLIN/loginib/login?_TRANID=AA000_001' ID = os.environ['MUFG_ID'] PASSWORD = os.environ['MUFG_PASSWORD'] browser = webdriver.PhantomJS() try: browser.get(MUFG_URL) WebDriverWait(browser, 10).until( expected_conditions.presence_of_element_located( (By.ID, 'account_id') ) ) browser.find_element_by_id('account_id').send_keys(ID) browser.find_element_by_id('ib_password').send_keys(PASSWORD) # 要素をクリックしたけど効かなかったので、onclickで呼び出している関数を呼び出す browser.execute_script('gotoPageFromAA011();') WebDriverWait(browser, 3).until( expected_conditions.presence_of_element_located( (By.ID, 'setAmountDisplay') ) ) return browser.find_element_by_id('setAmountDisplay').text except TimeoutException: browser.save_screenshot('debug.png') raise finally: browser.quit() if __name__ == '__main__': print(get_amount())