機械学習のデータ集めのために、持ち株情報が欲しい
将来的に機械学習で株価の検証がしたいと考えています。前の記事で20年分の情報をCSVでダウンロードしました。
しかし、貸借比率でも株価検証を行うため、詳細な情報が欲しくなりました。そこでまず第一段階として、自分の持ち株がどれくらいあるのか把握するために、スクレイピングを行うことにしました。
コード
import time # スリープを使うために必要
from selenium import webdriver # Webブラウザを自動操作する(python -m pip install selenium)
import chromedriver_binary # パスを通すためのコード
from selenium.webdriver.common.keys import Keys
import openpyxl
from openpyxl import load_workbook
import pyperclip
import openpyxl as xl
# エクセルファイルを開く(自分のファイルがある場所を指定)
target_file = r"C:\Users\Iwaki\PycharmProjects\port\tinsyaku.xlsx"
wb = openpyxl.load_workbook(target_file)
# 書き込むシートを指定
ws = wb["Sheet2"]
driver = webdriver.Chrome() # Chromeを準備
driver.get('https://site2.sbisec.co.jp/ETGate/')
# time.sleep(5) # 5秒間待機
# ユーザーネームとパスワードを設定
username = "自分のユーザーID"
password = "自分のパスワード"
# ユーザーネームテキストボックスを選択
user_id = driver.find_element_by_id("user_input")
# ユーザーネームを入力
user_id.find_element_by_name("user_id").send_keys(username)
# パスワードテキストボックスを選択
user_pass = driver.find_element_by_id("password_input")
# パスワードを入力
user_pass.find_element_by_name("user_password").send_keys(password)
# ログインを押下
login = driver.find_element_by_class_name("ov").click()
# 口座管理に遷移
driver.find_element_by_xpath("/html/body/div[1]/div[1]/div[2]/div/ul/li[3]/a/img").click()
# 全選択
driver.execute_script("document.execCommand('SelectAll');")
# コピー
copy = driver.find_element_by_tag_name("body").send_keys(Keys.CONTROL, 'c')
# クリップボードにコピー
copy2 = pyperclip.paste()
# エクセルに書き込み
row = 1
for line in copy2.split("\n"):
ws.cell(row=row, column=1).value = line
row += 1
wb.save(target_file)
print(copy)
# 確認用出力
print("-----------------------------------")
print(copy2)
driver.quit() # ブラウザを閉じる
このようにすれば完了します。
ちなみに、selenium、openpyxlは個別にダウンロードが必要です。pycharmの場合、【ファイル】➡【設定】➡【プロジェクトインタープリター】➡【+】でそれぞれを検索し、ダウンロードしておきます。
と、このように値で貼り付けができました。