Pythonで早速EDINET APIいじってみた

企業の決算書や報告書を提供しているEDINET様が
昨日APIを公開してくれたので早速いじってみた。

APIは「書類一覧API」と「書類取得API」の2つが用意されている。
1.書類が発行された日付を元に、発行された書類を全て取得(書類一覧API)
2.その中から必要な書類のデータを取得(書類取得API)
詳しくはEDINET公式まで
以下サンプルコードとその実行結果

#書類一覧APIのやつ

import requests

#↓エンドポイント
#バージョンが変わるたびに”v1"の部分を変更する必要がある模様
url = "https://disclosure.edinet-fsa.go.jp/api/v1/documents.json"

#必須パラメータのdateをぶちこむ
#出力結果を変えるためにtypeを2にする(type=1だとmetadataしか出力されない)
params = {"date": "2018-07-30", "type": 2}

#このAPIはREST APIなのでverifyをFalseにして接続するときのSSLを無効化する
res = requests.get(url, params=params, verify=False)
 
print(res.text)

そしたらこんな感じなものが出力される

つぎ

#書類取得APIのやつ

#....api/v1/documents/までがルートエンドポイント
#その後ろに書類管理番号を追記する
#今回は先程のJPモルガンのdocIDを使う
url = "https://disclosure.edinet-fsa.go.jp/api/v1/documents/S100DP48"

#書類取得APIにはtypeパラメータが4つある。2はPDFを出力してくれる。
params = {"type": 2}

#出力先ファイル
file_name = "test.pdf"

#先ほどと同じ接続方法に加えて、取得ファイルが大きいときのために
#stream=Trueにすることでメモリに優しい接続方法にしておく
res = requests.get(url, params=params, verify=False, stream=True)
 
if res.status_code == 200:
 
 #取得するpdfの大部分がバイナリ形式になっているのwbで書き込む
 with open(file_name, 'wb') as f:
 
  #念の為、小まめに書き込み、メモリに優しくしておく
  for chunk in res.iter_content(chunk_size=1024):
   f.write(chunk)

そしたらこんな感じのファイルができる

これを更に改良してファンダメンタル分析楽にしよ〜

この記事が気に入ったらサポートをしてみませんか?