Python

投信データのダウンロード

目的

Pythonを使って投資信託協会サイトから複数の投資信託のデータをダウンロードします。ダウンロードしたい投資信託のISINをまとめたcsvファイルに予め用意しておけば、簡単にダウンロードできます。では早速やってみましょう。

投資信託のCSVファイルを用意

私はfundlist.csvというファイルにデータを取りたい投資信託を特定しておきました。

A列にISIN、B列にファンド名が記載してあります。

B列の記入は任意です。しかし、わかりやすいファイル名に変更する作業がコードに含まれていますので、記載してください。

投信協会のダウンロードサイトを確認しておきましょう

コードを書く前に投資信託協会のダウンロードサイトをみておきましょう。下の画像になっています。手動ダウンロードをクリックしたら、基準価額データがダウンロードされる仕組みです。

「ISINを指定して、手動ダウンロードをクリック」し、これを複数のファンドで回してゆくコードを書いていきましょう。

コード

汚いコードですね・・・目的はコードのエレガントさにはなく、データを落とすことなのでご容赦ください。

from selenium import webdriver         
import chromedriver_binary             # パスを通す
import time                            
import glob
import os
import csv


# Chromeを立ち上げる
browser = webdriver.Chrome() 
path = "https://toushin-lib.fwg.ne.jp/FdsWeb/FDST030000?isinCd="

#ファンドリストの読み込み(ファンドリスト=ISIN+ファンド名)
fd = open('./Fundlist/list.csv')
code = csv.reader(fd)

#ファンドリストのファンドを、1.上から順番に読み込んで、#2.ダウンロードして、#3.ファイル名を変換して保存する
for row in code:
    #1.読み込んでブラウザーに渡す
    url = path + row[0]
    browser.get(url)
    time.sleep(1)
    
    #2.クリックしてダウンロード
    frm = browser.find_element_by_xpath('/html/body/div[5]/div/div[1]/div/div[2]/div/div[3]/a')
    time.sleep(1)
    frm.click()
    time.sleep(5)
    
    #3ダウンロードしたファイルの名前をISIN_ファンド名に変更
    csvindlf = glob.glob('/ダウンロード先のパス/*.csv')
    latest = max(csvindlf, key=os.path.getctime)
    savepath = "/新ファイルの保存先のパス/"
    f = savepath + row[0]+"_"+row[1]+".csv"
    os.rename(latest, f)
    
    
browser.quit()

ダウンロードしたファイル名は「lst_standard_price_20211119093410.csv」になっています。このままだとわかりづらいので、ファイル名は「ISIN」と「ファンド名」を組み合わせて置き換えました。プログラム実行結果は下のようになります。

なお、出来上がったCSVはshift-jisです。Pythonで作業するにはUTF-8にエンコードしてあげる必要があります。

-Python
-, , , ,