目的

プロジェクトS という題目で、ラズパイにインストールしたPythonで株価を予想して、自動的に購入してみようと思います。

前回はコチラ

seleniumを使って株の自動購入を検証したいと思います。
前回でseleniumを導入して、プログラムでホームページのスクリーンショットを取得するまで行いました。

前回書いたとおり
今回はSBI証券サイトを利用して株の購入をプログラムで自動化したいと思います。
株の購入の直前までで、実際には購入しません。

参照サイト

ストックドッグ seleniumで自動売買 〜SBI証券から自動で株を買ってみる〜
かなり違う点もあり、ここでも手法をメモしておきます。

Qiita Python + Selenium で Chrome の自動操作を一通り
Seleniumの操作をかなり詳細に記載頂いている。

自動化のおさらい

前回にも少し書きましたが、以下の作業を自動化したいと思います。

  • ブラウザを開いて。(今回はGoogle Chrome)
  • 株を取り扱っているサイト(今回はSBI)を開きます。
  • 登録済のアカウントでログインします。
  • 購入ページを開きます。
  • 購入ページにて、銘柄コードや購入数、価格指定などを入れたりして、購入ボタンを押します。

自動化プログラム

さっそくですが、以下が今回のプログラムです。
ログインに利用するIDやパスワードはxxxxxの部分に記載します。

SBI自動売買
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

url = 'https://www.sbisec.co.jp/ETGate'
user_id = 'xxxxx'
user_pass = 'xxxxx'
trade_pass = 'xxxxx'

chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--disable-dev-shm-usage')

driver = webdriver.Chrome(executable_path='/usr/bin/chromedriver',chrome_options=chrome_options)

#ブラウザ操作
driver.get(url)
uid = driver.find_element_by_name('user_id')
password = driver.find_element_by_name('user_password')
uid.send_keys(user_id)
password.send_keys(user_pass)

driver.find_element_by_name('ACT_login').click()
driver.implicitly_wait(10)

driver.find_element_by_xpath('//div[@id="link02M"]/ul/li[2]').click()

#現物買にチェック
driver.find_element_by_name("trade_kbn").click()

#銘柄コードを入力
driver.find_element_by_name("stock_sec_code").send_keys(9999)

#売買株数を入力
driver.find_element_by_name("input_quantity").send_keys(1)

#価格指定 
driver.find_element_by_name("input_price").send_keys(10)

#取引パスワードを入力
driver.find_element_by_name("trade_pwd").send_keys('trade_pass')

#この記事用の処理
#スクリーンショットの見た目をよくするため、特定の位置をクリックする。
driver.find_element_by_name("stock_sec_code").click()


driver.save_screenshot("sbi_account.png")
html = data = driver.page_source.encode('utf-8')

driver.quit()

上記プログラムを実行すると、スクリーンショットが出力されます。
その画像から設定した値が入力されていることが分かると思います。

プログラム中にあるブラウザ操作以降は今回初めてのコードです。

記載方を少し学習する必要がありますが。

  • IDの利用方法
  • どの部分をクリックしたいか
  • どの部分にチェックを入れたいか
  • どこにどんな文字を入力したいか

などの方法はそこまで難しいものではないと思います。
一度理解できれば、流用は簡単だと思いました。

この後最終確認画面となりますが、そこまでは行きません。
このページのテクニックを用いれば、それも難しくないと思います。

今回は以上です。

実践 Selenium WebDriver