SBIネオモバイル証券のポートフォリオをCSVで取り込む【Python】

PythonのスクレイピングでSBIネオモバイル証券のポートフォリオをCSVに出力できるようにしました。

管理人みゆき

ネオモバのポートフォリオって見にくいなぁ・・・

と思っていたので便利に使えるようになりました。

ネオモバのWEBサイトは”PC・タブレットなどスマートフォン以外でのご利用は、推奨環境外”とのことなので、スクレイピングによる操作は自己責任でお願いします。

スポンサーリンク
目次

取り込みイメージ

この記事で紹介するコードで、ネオモバポートフォリオを以下のCSV形式で取り込めます。

管理人みゆき

表示されている数値は全て取得し、編集しやすいようにカンマは抜いてあります。

ポートフォリオ取得元ページと取得方法

ネオモバHPにログイン後、口座管理(ポートフォリオ)ページを開いて下までスクロールし、全銘柄を表示させてから取得させています。

ネオモバでポートフォリオをCSV出力するコード

解説

ライブラリのインストール

冒頭でライブラリをインストールします

ログイン

ログインページを開きユーザーネーム、パスワードを入力しログインします。

ユーザーネーム等の入力欄はコードの最後に設けています。

「chromedriverのフルパス」はchromedriver.exeの保存先のフルパスを入力します。

ポートフォリオページを開き、ページ下部までスクロール

ポートフォリオのページに遷移し、ページ最下部までスクロールします。

スクロールすると自動的に続きが表示される仕様なので、「もっと見る」が表示されなくなるまでスクロールします。

載せたコードでは、スクロールの幅を適当に「10000px」としています。
30銘柄程度ではこれで問題なく動くことを確認していますが、もし最後まで取得されない場合は数字を大きくしてみてください。

銘柄ごとにテーブルを取得

最後までスクロールして銘柄が全て表示されたら、BeautifulSoupでパースし、テーブル部分をPandasで取得します。

空のデータフレームに銘柄ごとのテーブルを追加していきます。

取得イメージです。

コード、銘柄名、評価額、評価損益を取得しテーブルと結合

コード、銘柄名などそれぞれのclass名を指定し取得していきます。

取得後、pandas.Seriesとし、concatでデータフレームにします。

ネオモバポートフォリオCSV出力結果(未編集)

これでポートフォリオの情報は全て取得できます。

確認用ならこれで十分ですが、データをグラフ化するなどの分析には使いづらいですね。

数値セルは数値だけになるように編集します。

数値を編集する

空白を削除、カンマを削除などの処理を行います。

これで、数値で欲しいセルが数値として出力されるようになりました。

ネオモバポートフォリオCSV出力結果

CSV出力

指定した名前(name)+出力日.csv形式で出力します。

def export_data(df_result, name):
    df_result2.to_csv(name + '{0:%Y%m%d}.csv'.format(datetime.date.today()))

実行

if __name__ == '__main__':
    
    # SMBC日興ログインアカウント
    neomobileusername = "ユーザーネーム"
    neomobilepassword = "パスワード"
    name="SBIネオモバイルポートフォリオ(csv出力時のファイル名)"
    #ログイン
    driver=neomobile_login(neomobileusername,neomobilepassword)

    #注文中リストの書き出し
    df_result2=portfolio_list()
   
    export_data(df_result2,name)
    

    driver.quit()

終わりに

趣味で作ったプログラムなので、間違いや改良点等ご容赦ください。

Pythonは独学で本やインターネットで勉強しました。
こちらの本はPythonのインストールや基本的な文法から学べ、参考になりました。

何冊か読み、作りながら勉強していくと身につきやすかったです。
Kindle Unlimitedなら、Pythonの教本も何冊もありますし、月額料金のみで気にせず読めるのでプログラミングの勉強には最適でした!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

目次