目的
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にエンコードしてあげる必要があります。