やりたいこと
新NISAのタイミングでSBI証券を使い始めようと思ったら重要なお知らせが150件ほどたまっていた。見た感じまとめて確認にするUIもなかったので仕方なく自動化することにした。
※この方法によって重要なお知らせを見落としたことによる損害などについては一切責任を負えません。
前提条件
- ChromeDriver
- Python
- Selenium
の実行環境がある
ソースコード(一部ChatGPTで生成)
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
import time
# WebDriverのパスを指定して、ブラウザを開きます(例:Chromeを使用する場合)
driver = webdriver.Chrome()
# ログインページに移動
driver.get('https://sp.sbisec.co.jp/login')
# ログイン処理(自分のユーザー名とパスワードを設定)
username = driver.find_element(By.NAME, 'username')
password = driver.find_element(By.NAME, 'originPassword')
username.send_keys('username')
password.send_keys('password')
password.send_keys(Keys.ENTER)
# 以下負荷を考えて適当にスリープをいれてます
time.sleep(1)
notice_icon = driver.find_element(By.CLASS_NAME, 'icon-tooltip')
notice_icon.click()
time.sleep(1)
href_link = driver.find_element(By.LINK_TEXT, '重要なお知らせ一覧はこちら')
href_link.click()
#重要なお知らせ一覧
driver.switch_to.window(driver.window_handles[1])
time.sleep(1)
# 事前に確認したお知らせ分くりかえす
for i in range(100):
#ページ内のリンクを全て洗い出す ※リンクを毎回取り直さないとSeleniumがエラーを吐くのでこのような繰り返し処理にしています
all_links = driver.find_elements(By.XPATH, "//a[@href]")
important_link = ''
for l in all_links:
#おしらせようのリンクだけ取り出す
if 'viewInfo' in str(l.get_attribute('href')):
important_link = l
print(important_link)
break
if important_link == '':
break
important_link.click()
time.sleep(1)
#確認ボタンを押して 閉じる
confirm_btn = driver.find_element(By.NAME, 'ACT_estimate')
confirm_btn.click()
close_btn = driver.find_element(By.NAME, 'ACT_backViewInfoList')
time.sleep(1)
close_btn.click()
time.sleep(1)
# タブを閉じる
driver.close()
# ブラウザを終了
driver.quit()