【Python】ラズパイでSBI証券に自動ログインしてみた

#はじめに
先日、ラズパイをゲットして初期の構築しました。
早速、これまでmacOSやAWSで実行していたPythonをラズパイで実行してみたいと思います。
今回は過去に記事にした以下の自動ログインをラズパイで実行してみたいと思います。

https://qiita.com/hirockio2206/items/540a0991ba29dec3fc40

#環境
・macOS Catalina 10.15.7
・Sanoov Raspberry Pi 3 Model b+
　購入したものはAmazonで以下になりますのでご参考ください。

https://www.amazon.co.jp/gp/product/B07XQ6FLD5?ie=UTF8&psc=1&linkCode=ll1&tag=hirockio2206-22&linkId=731a53fd8a7cc7151463b10b33466884&language=ja_JP&ref_=as_li_ss_tl

#手順
####1.Pythonのバージョンを確認します
ラズパイ3 Model b+には初期でPythonがインストールされいます。ですが、Pythonのバージョンがわかりません。そこで以下のコマンドでバージョンの確認をします。ターミナルはデフォルトで[LXTerminal]が入っています。

```
$ python --version
Python 2.7.16

$ python3 --version
Python 3.7.3
```

ふむふむ。Python2系と3系が両方入っていますね。なので、Python3系を利用されたい場合は、pip3でライブラリのインストールをしていくことになるかと存じます。違いが気になる方は以下もご確認ください。

https://qiita.com/hirockio2206/items/450e92c7d863c18a7e4d

####2.macOSで利用していたプログラムをラズパイに移動させます。
方法は以下の記事でご確認ください。

https://qiita.com/hirockio2206/items/1337a56b3d9c145c387f

####3.ラズパイにseleniumをインストールします。

```
$ sudo pip3 install selenium

Successfully installed selenium-3.141.0
```

####4.ラズパイでChromiumのバージョンを確認します。
ラズパイにはブラウザのChromiumがインストールされています。このバージョンを確認します。
ブラウザ開く　＞　右上の「・・・」(設定)　＞　[Chromiumについて]
今は**「88.0.4324.187」**ですね。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1966337/d03283e6-349f-28cb-726e-6d2f5955329e.png)

ここで、以下のコマンドでChromiumを最新バージョンにアップデートします。

```
$ sudo apt-get update
$ sudo apt-get install chromium-browser
```

もう一度バージョンを確認してください。
アップデート後は**「92.0.4515.98」**になりました。(2021/9/25)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1966337/2c33f1f9-bc89-19be-a562-7e0ad042c262.png)


####4.ラズパイに上記のバージョンにあったchromiumドライバーをインストールします。
以下のサイトにアクセスします。

https://launchpad.net/~canonical-chromium-builds

[stage for security update]をクリックします。
![スクリーンショット 2021-09-25 11.42.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1966337/8c453b01-3020-d4b9-2c52-e7b8b412eddf.png)

今回インストールしたいバージョンがないので[view packege details]をクリックします。

![スクリーンショット 2021-09-25 11.44.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1966337/08247837-8358-6f34-cf43-58b1392cc8b2.png)

Package name containsに[chromium-browser]と入力し、
Published(発行済み)→Superseded(後継)に変更し、Filterをクリックします。
中から、今回欲しい「92.0.4515.98」を見つけます。完全一致しなくとも、メジャーバージョン(今回なら92)が合っていれば動作するかと思います。(ただし、未検証)

![スクリーンショット 2021-10-25 15.36.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1966337/46e70cd2-1d27-42b4-a1d4-7269f67e25c0.png)

Buildsの中から、[armhf]を選択します。
![スクリーンショット 2021-10-25 15.38.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1966337/966e3826-ecd5-ee31-1c6c-2e3330cabbea.png)


下にスクロールして、
chromium-chromedriverとだけあるものを探します。２つあります。その中で**dbgsymがない方**を右クリックしてURLをコピーします。メモ帳に貼って、ラズパイ側に送ってください。
![スクリーンショット 2021-10-25 15.41.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1966337/7a8e500e-fedb-bdc3-b54b-06df1b55861c.png)



ラズパイメモの先頭に'sudo wget 'を付け加えてターミナルで実行します。

```
$ sudo wget https://launchpad.net/~canonical-chromium-builds/+archive/ubuntu/stage/+build/21987959/+files/chromium-chromedriver_92.0.4515.159-0ubuntu0.18.04.1_armhf.deb
```

次にインストールするために以下のコマンドを打ちます。
sudo dpkg -i の後にダウンロードしたファイル名を貼り付けます。

```
$ sudo dpkg -i chromium-chromedriver_92.0.4515.159-0ubuntu0.18.04.1_armhf.deb
```

####5.ラズパイでSBI証券のTOPページに行けるか以下のPythonプログラムを実行します。

```SBI_ACCESS.py
from selenium import webdriver

driver = webdriver.Chrome(executable_path="/usr/lib/chromium-browser/chromedriver")
driver.get("https://www.sbisec.co.jp/ETGate")
```

うまくいったら、次はIDとPWを入力します。その前にラズパイにIDとPWを記載したテキストを配置します。
ラズパイの以下の場所にIDファイルとPWファイルを配置します。場所はやフォルダ名は任意です。

```
/usr/hiroki/Info/ID.txt
/usr/hiroki/Info/PW.txt
```

以下がラズパイでSBI証券にログインする際の実行プログラムです。

```SBI_LOGIN.py
from selenium import webdriver#←seleniumからwebdriverをインポートします。変更不要です。

#↓IDファイル名や置き場を書き換えて下さい。
ID = open('/usr/hiroki/Info/ID.txt', 'r', encoding='UTF-8')
IDdata = ID.read()

#↓PWファイル名や置き場を書き換えて下さい。
PW = open('/usr/hiroki/Info/PW.txt', 'r', encoding='UTF-8')
PWdata = PW.read()

#↓chromedriverを呼び出しています。その後、SBI証券のホームページにアクセスしています。
driver = webdriver.Chrome(executable_path="/usr/lib/chromium-browser/chromedriver")
driver.get("https://www.sbisec.co.jp/ETGate")

#↓ユーザIDを読み込んだテキストから貼り付けています。
elem_id_word = driver.find_element_by_name("user_id")
elem_id_word.send_keys(IDdata)

#↓PWを読み込んだテキストから貼り付けています。
elem_id_word = driver.find_element_by_name("user_password")
elem_id_word.send_keys(PWdata)

#↓ログインボタンを押しています。
elem_id_btn = driver.find_element_by_xpath("/html/body/table/tbody/tr[1]/td[2]/form/div/div/div/p[2]/a/input")
elem_id_btn.click()
```

#最後に
いかがでしたでしょうか。ラズパイでseleniumは動きましたでしょうか。
5,000円でできる自動化プログラムって感じですね。

ただ、動きはmacOSに比べるとまったりしています。動けばいいんですが。
ラズパイでのGUI操作の自動化は安定しないのかもしれません。

ご参考になれば幸いです。