THEOのサイトにPythonとSelenium使ってログインする方法を解説します。
※2021/02/23時点の情報です
環境
- Windows 10
- Python 3.8
- Selenium 3.141.0
全体の処理の流れと注意点
全体の処理の流れについては、下記記事に詳しく書いたのでこちらもあわせて確認してみてください。楽天銀行の例になっていますが、処理の流れは同じです。
また、下記記事では他サイトのサンプル一覧と注意点を解説しているのでこちらも参考にしてみてください。
サンプルコード全文
#
# THEOサイトへログイン
#
import json
from selenium.webdriver import Firefox, FirefoxOptions
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
# 設定ファイルを取得
login_info = json.load(open("login_info.json", "r", encoding="utf-8"))
# ログインサイト名
site_name = "sec_theo"
# ログイン画面URL
url_login = login_info[site_name]["url"]
# ユーザー名とパスワードの指定
USER = login_info[site_name]["id"]
PASS = login_info[site_name]["pass"]
# Firefoxのヘッドレスモードを有効にする
options = FirefoxOptions()
options.add_argument('--headless')
# Firefoxを起動する
browser = Firefox(options=options)
# ログイン画面取得
browser.get(url_login)
# 入力
e = browser.find_element_by_name("email")
e.clear()
e.send_keys(USER)
e = browser.find_element_by_name("password")
e.clear()
e.send_keys(PASS)
# ログイン
button = browser.find_element_by_css_selector(".md-raised")
button.click()
# ページロード完了まで待機
WebDriverWait(browser, 10).until(
ec.presence_of_element_located((By.CLASS_NAME, "current-amount-container"))
)
# ログインできたか確認(画面キャプチャ取る)
browser.save_screenshot("../screenshots/sec_theo/home.png")
browser.quit()
ログイン情報設定ファイル
サイトURLやログイン情報(IDやパスワード)は、JSON形式のファイルに保持するようにしています。以下のサンプルでは楽天銀行とTHEOの2サイトの情報と設定しています。
"id", "pass"の値を書き換えればそのまま使えるはずです。
なお、このファイルだけは絶対に漏洩しないよう、管理方法に注意しましょう!
login_info.json
{
"bank_rakuten": {
"id": "1234567890",
"pass": "password",
"url": "https://fes.rakuten-bank.co.jp/MS/main/RbS?CurrentPageID=START&&COMMAND=LOGIN"
},
"sec_theo": {
"id": "1234567890",
"pass": "password",
"url": "https://app.theo.blue/account/login"
}
}