Edinet APIを使ってみる(書類一覧API編 その1)
はじめに
Edinet APIをPythonで使ってみる。
書類一覧APIと書類取得APIの2つがあるが、この記事では書類一覧APIについて扱う。
まずは叩いてみる
pythonからgetメソッドでAPIを叩く。
出力がJSONフォーマットでそのままだと見づらいのでdict型に変換。
import requests import json date = '2022-03-09' response = requests.get('https://disclosure.edinet-fsa.go.jp/api/v1/documents.json?date='+date+'&type=2') res_txt = response.text res_dict = json.loads(res_txt)
出力はこんな感じ。
metadataに指定した日付にEdinetに提出された書類のサマリー情報が格納されている。
resultsには提出書類ごとの情報。
res_dict['metadata'] #出力 {'title': '提出された書類を把握するためのAPI', 'parameter': {'date': '2022-03-09', 'type': '2'}, 'resultset': {'count': 139}, 'processDateTime': '2022-03-10 00:02', 'status': '200', 'message': 'OK'}
res_dict['results'][0] #出力 {'seqNumber': 1, 'docID': 'S100N7NZ', 'edinetCode': 'E12444', 'secCode': None, 'JCN': '8010001114914', 'filerName': '三井住友トラスト・アセットマネジメント株式会社', 'fundCode': 'G04973', 'ordinanceCode': '030', 'formCode': '10A000', 'docTypeCode': '160', 'periodStart': '2021-06-10', 'periodEnd': '2022-06-09', 'submitDateTime': '2022-03-09 09:00', 'docDescription': '半期報告書(内国投資信託受益証券)-第16期(令和3年6月10日-令和4年6月9日)', 'issuerEdinetCode': None, 'subjectEdinetCode': None, 'subsidiaryEdinetCode': None, 'currentReportReason': None, 'parentDocID': None, 'opeDateTime': None, 'withdrawalStatus': '0', 'docInfoEditStatus': '0', 'disclosureStatus': '0', 'xbrlFlag': '1', 'pdfFlag': '1', 'attachDocFlag': '0', 'englishDocFlag': '0'}
resultsの中身をpandas DataFrameに変換
先ほど取り出したresultsをpandas DataFrameに変換して中身を見やすくする。
あらかじめ出力をdict型に変換してあるので、変換はコード1行で可能。
このままだと列数が多いので、columns変数に必要そうな項目のリストを代入して列数を絞る。
import pandas as pd res_rslt = res_dict['results'] df_rslt = pd.DataFrame(res_rslt) df_rslt.set_index('seqNumber',inplace=True) columns = ['docID', 'edinetCode', 'secCode', 'JCN', 'filerName', 'ordinanceCode', 'formCode', 'docTypeCode', 'periodStart', 'periodEnd', 'submitDateTime'] df_rslt[columns].head()
とりあえず今回はここまで。