1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

MoneyFoward MEのマイデータをスクレイピングして自分の好きな分類で集計する(Python)(2)

Posted at

はじめに

前回、ログインまでやりました。

①「Python・Selenium」を使用してMoneyFoward MEにログインする
②保有している資産をスクレイピングして、それぞれの保有資産を自分の欲しい分類にて集計 (今回)
③EXCELファイルにてダウンロードする (今回)

例として、「投資信託」について、投資先(全世界・先進国・S&P500・国内など)による区分ごとにダウンロードすることをやってみます。

データ取得

保有している「資産名称」・「評価額」・「評価損益」をスクレイピング。
同時に、「元本」を計算する。それぞれの保有資産を、あらかじめ作成しておいた分類ファイル(ローカル)を読み取って、自分の好きな資産分類に集計できるようにしておく。

mf_get.py
def get_asset_class(name):

    asset_class = ''
    for i in range(len(inv_trust_list.index)):
        if name == inv_trust_list['name'][i]:
            asset_class = inv_trust_list['asset_class'][i]
            break

    return asset_class

print('start getting portfolio')

# ローカルに用意したファイルの読み込み
inv_trust_list = pd.read_csv('./investment_list.csv',encoding='SHIFT-JIS')

# 項目の用意
set_column5 = ['asset_class','total','value','gainloss','name']

# 投資信託の表を取得
table_mf = browser.find_element(by=By.CLASS_NAME, value='table-mf')
trs = table_mf.find_elements(By.TAG_NAME,'tr')
nrow = len(trs)

mf_data = []

for i in range(1,nrow):
    mf_name = trs[i].find_elements(By.TAG_NAME,'td')[0].text      #銘柄名
    mf_value = trs[i].find_elements(By.TAG_NAME,'td')[4].text     #評価額
    mf_gainloss = trs[i].find_elements(By.TAG_NAME,'td')[6].text  #評価損益

    asset_class = get_asset_class(mf_name)

    mf_value = int(mf_value.replace('','').replace(',',''))
    mf_gainloss = int(mf_gainloss.replace('','').replace(',',''))
    mf_total = mf_value - mf_gainloss

    mf_data.append([asset_class,mf_total,mf_value,mf_gainloss,mf_name])

mf_df = pd.DataFrame(data=mf_data,columns=set_column5)

例)ローカルに用意したデータ(investment_list.csv)
スクリーンショット 2023-06-26 141750.png

集計 & EXCELファイルにダウンロード

mf_get.py
print('start data editing & start download excel')

# 集計
df = mf_df.groupby(['asset_class']).sum(['total','value','gainloss'])

# 日付をファイル名につけて、その日の資産一覧を保存
filename = './' + datetime.date.today().strftime('%Y%m%d') + '_asset-list.xlsx'

with pd.ExcelWriter(filename) as writer:
    df.to_excel(writer, sheet_name='投資信託集計')

print('done')

例)投資信託の区分ごとに、以下の表がダウンロードされる
スクリーンショット 2023-06-26 141056.png

まとめ

  • MoneyFoward MEの資産データを取得し、自分の好きな分類にてして、集計・ダウンロードしました。
  • 使用しているサービスが100%自分の思い通りのものであればよいですが、そうでない場合は、自分でカスタマイズを加えることができるのは、プログラムを勉強するモチベーションになるかと思います。
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?