Edinet APIを使ってみる(書類取得API編 その1)
はじめに
Edinet APIをPythonで使ってみる。
書類一覧APIと書類取得APIの2つがあるが、この記事では書類取得APIについて扱う。
まずは叩いてみる
import requests doc_id = 'S100LF3R' #取得したい書類の書類管理番号 res = requests.get('https://disclosure.edinet-fsa.go.jp/api/v1/documents/'+doc_id+'?type=1') res.content #出力 #b'PK\x03\x04\x14\x00\x08\x00\x08\x00\xb2N\x83T\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00_\x00\x00\x00XBRL/PublicDoc/0000000_header_jpcrp030000-asr-001_E03054-000_2021-03-31_01_2021-05-28_ixbrl.htm\xed][s\x1b\xc7\x95~\xcf\xaf@\xd1U\x9b\x97...'
仕様書の通り、取得したい書類のバイナリデータを取得できたので、
これをzipファイルに書き出す。
import shutil with open(f'{doc_id}.zip','wb') as f: f.write(res.content)
これでカレントディレクトリに取得したい書類のzipが保存される。
提出本文書のxbrlのみを取り出す。
NLPで使いそうな提出本文書のxbrlのみを取り出してみる。
必要になる処理は主に以下の通り。
・カレントディレクトリ階下のtempフォルダにzipを保存&解凍
・中身のxbrlファイルをxbrlフォルダに移動
・tempフォルダに保存したzip&解凍後のファイルを削除
・for文で複数文書を取得
import requests import shutil import glob import os doc_ids = ['S100LF3R','S100LFJ8','S100LGMY']#取得したい書類の書類管理番号 for doc_id in doc_ids: res = requests.get('https://disclosure.edinet-fsa.go.jp/api/v1/documents/'+doc_id+'?type=1') with open(f'./temp/{doc_id}.zip','wb') as f: f.write(res.content) shutil.unpack_archive(f'./temp/{doc_id}.zip', f'./temp/{doc_id}') xbrl_temp = glob.glob(f'./temp/{doc_id}/XBRL/PublicDoc/*.xbrl') os.rename(xbrl_temp[0], f'./xbrl/{doc_id}.xbrl') shutil.rmtree(f'./temp/{doc_id}') os.remove(f'./temp/{doc_id}.zip')
とりあえず今回はここまで。