ども♪マコトです。
EDINETが提供しているAPIで財務情報を取得するプログラムを作ってみました。
その1です。
まずは1日に提出されている財務情報を一括で取得したいので、1日に提出される書類一覧を取得するプログラムを作ってみます。
ただ、JSON形式だと人が見るのに適切ではないと思ったのでCSV形式に変換するようにしました。
注意点として2点。
・dドライブのdataフォルダに格納するように作成したのでdataフォルダを作成してください。
・以下のプログラムの中で「#ファイルの取得日を設定」という箇所があります。ここを変更すると任意の日付のEDINETの情報が取得できるはずです。
""" EDINETのAPIを使って提出書類一覧をCSVで取得する。 """ import requests import json import os #保存するディレクトリ DOWNLOAD_SAVE_DIR = r"C:\data" #ファイルの取得日を設定 FileDate = "2020-02-14" #バージョンが変わるたびに”v1"の部分を変更する必要がある模様 url = "https://disclosure.edinet-fsa.go.jp/api/v1/documents.json" #必須パラメータのdateを入れる #出力結果を変えるためにtypeを2にする(type=1だとmetadataしか出力されない) params = {"date": FileDate, "type": 2} #このAPIはREST APIなのでverifyをFalseにして接続するときのSSLを無効化する res = requests.get(url, params=params, verify=False) json_data = json.loads(res.text) saveFileName = "EDINET-FSA" + FileDate + ".CSV" saveFilePath = os.path.join(DOWNLOAD_SAVE_DIR, saveFileName) # 書き出し用のファイルを開く out_file = open(saveFilePath,"w") #ヘッダー dataline = "連番,書類管理番号,提出者EDINETコード,提出者証券コード,提出者法人番号,提出者名,ファンドコード,府令コード,様式コード,書類種別コード,期間(自),期間(至),提出日時,提出書類概要,発行会社EDINETコー,"\ "対象EDINETコード,子会社EDINETコード,臨報提出自由,新書類管理番号,操作日時,取下区分,書類情報修正区分,開示不開示区分,XBRL有無フラグ,PDF有無フラグ,代替書面・添付文章有無フラグ,英文ファイル有無フラグ" + '\n' out_file.write(dataline) for jsonline in json_data["results"]: dataline = str(jsonline["seqNumber"]) + ',' + str(jsonline["docID"]) + ',' + str(jsonline["edinetCode"]) + ',' + str(jsonline["secCode"]) + ',' + str(jsonline["JCN"]) + ',' + \ str(jsonline["filerName"]) + ',' + str(jsonline["fundCode"]) + ',' + str(jsonline["ordinanceCode"]) + ',' + str(jsonline["formCode"]) + ',' + str(jsonline["docTypeCode"]) + ',' + \ str(jsonline["periodStart"]) + ',' + str(jsonline["periodEnd"]) + ',' + str(jsonline["submitDateTime"]) + ',' + str(jsonline["docDescription"]) + ',' + str(jsonline["issuerEdinetCode"]) + ',' + \ str(jsonline["subjectEdinetCode"]) + ',' + str(jsonline["subsidiaryEdinetCode"]) + ',' + str(jsonline["currentReportReason"]) + ',' + str(jsonline["parentDocID"]) + ',' + str(jsonline["opeDateTime"]) + ',' + \ str(jsonline["withdrawalStatus"]) + ',' + str(jsonline["docInfoEditStatus"]) + ',' + str(jsonline["disclosureStatus"]) + ',' + str(jsonline["xbrlFlag"]) + ',' + str(jsonline["pdfFlag"]) + ',' + \ str(jsonline["attachDocFlag"]) + ',' + str(jsonline["englishDocFlag"]) + '\n' out_file.write(dataline) #ファイルをクローズする out_file.close()
私の環境でうまく行ったので他の環境でもうまくいくはず。
コメント