目的

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

前回はコチラ

今回はseleniumを使って株の自動購入を検証したいと思います。

それで今回は自動で購入するためのツールの準備編となります。

最終目的は、株購入のサイトSBI証券を使って、株の購入の直前まで実行してみたいと思います。
実際には購入しません。

参照サイト

ストックドッグ seleniumで自動売買 〜SBI証券から自動で株を買ってみる〜
Ubuntu driver

主に上のページを参照していますが、かなり違う点もあるので、
ここでも手法をメモしておきます。
下のページが今回使うツールです。
説明は後述します。

seleniumとは

まずseleniumとはなんぞやということですが。

普通に株を購入する場合は、

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

上記のように行いますが。

それをすべてプログラムが自動で行います。

自動でブラウザを開き、対象ページにアクセスして、ログインして、入力欄に数値を入れて、購入ボタンを押す。

これをseleniumというツールで、できるようになります。

selenium利用の準備

いきなりですが、この準備の工程こそ最大の難関です。
ラズパイ-pythonはやはり一筋縄では行かないですねぇ。
ものすごくハマりました。

seleniumのインストール

何はともあれ、ツールのインストールです。

ターミナル
$ pip3 install selenium

ブラウザ(chrome)ドライバのインストール

次にブラウザ関連のインストールです。
プログラムからブラウザを自動で操作するにはドライバというのが必要とのことです。

ここが一番苦戦しました。

まずは念のためで、もしかしたら不要かもしれませんが
chroniumというラズパイ用のChromeブラウザをインストールしておきます。

ターミナル
$ sudo apt-get update
$ sudo apt-get upgrade -y
$ sudo apt-get install chromium-browser

次にドライバのインストールですが、普通に検索すると、
MacやWindows,Linux用のドライバページがすぐ見つかり簡単にダウンロードできます。
ただ私の環境では、それらすべて利用できませんでした。

Windowsドライバを使って、なぜかできたという記事も見かけたのですが。。。
以下のようなエラーとなります。

ターミナル
Message: 'chromedriver' executable needs to be in PATH.

OSError: [Errno 8] Exec format error

unknown error: DevToolsActivePort file doesn't exist

それで
さらに検索していくうちにUbuntu用のドライバだと動くということで。
さらにさらにドライバでも、最新バージョンだとエラーとなり、特定のバージョンで利用するとのこと。
ラズパイとの相性が悪いという見方もあります。

そのドライバのインストールは以下となります。

ターミナル
$ sudo dpkg -i chromium-chromedriver_61.0.3163.79-0ubuntu0.14.04.1196_armhf.deb
疲れました。。。

正直、、
Mac上でのseleniumとChromeDriverの設定は、あっけなくうまく行きました。
ラズパイにここまで拘らなくても良いのでは!?と今更思ったりします。

動作確認実行コード

まずはインストールしたseleniumが正常にどうさするか確認したいと思います。
以下のpythonファイルを実行します。
すると、フォルダにtest.pngというgoogleの画像ファイルが作られることを確認します。

getgoogle.py
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

url = 'https://google.com'
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)
driver.save_screenshot("./test.png")

driver.quit()

以下のようなスクリーンショットが取得できます。
画像の大きさはラズパイの設定により違ってくるかもしれません。

以上で、seleniumの準備は完了です。
今回はここまでです。次回はSBI証券サイトで自動で株を購入する直前までやってみます。

Selenium実践入門 ―― 自動化による継続的なブラウザテスト (WEB+DB PRESS plus)