EDINET APIをpythonで実行するまわりを調べてみた


EDINET APIを実行する

 有報キャッチャーAPIは、証券コードを指定すると該当書類のZIPファイルが取得できるが、任意の日付にどの会社がどういう書類をEDINETに提出したかが分からない(任意の指定した日付で有報キャッチャーAPIが実行できない)ので、2019年春にEDINETのAPIがローンチしているので、そちらのAPIを試してみた。


edinet_api.py

import json

import requests
import datetime

def fn_getzipfile(docid):
url2 = "https://disclosure.edinet-fsa.go.jp/api/v1/documents/" + docid
params2 = { "type" : 1}
fname = docid + ".zip"
print('■'+ str(fname))

# EDINET API_2:提出書類のZIP取得
res = requests.get(url2, params=params2)

# ファイルへ出力
if res.status_code == 200:
with open(filename, 'wb') as f:
for chunk in res.iter_content(chunk_size=1024):
f.write(chunk)

def fn_rtrv_edinet(ymd):

url = "https://disclosure.edinet-fsa.go.jp/api/v1/documents.json"
params = {"date": str(ymd), "type": 2}

# EDINET API_1:提出書類の取得
res = requests.get(url, params=params)

#print(res.text)
#print(len(json_form["results"]))

i = 0
json_form = json.loads(res.text)
for jsn in json_form["results"]:
if str(jsn["docDescription"]).find("有価証券報告書")>-1 :
if str(jsn["docDescription"]).find("内国投資信託受益証券")==-1 :
if str(jsn["docDescription"]).find("訂正")==-1 :
docid = jsn["docID"]
print('■' + str(docid))
i = i +1

#print(jsn)

lst = ['docID','SecuritiesCode','edinetCode','secCode','filerName']
lst = lst + ['submitDateTime','periodStart','periodEnd','docDescription']
for l in lst:
x= [print(jsn[l]) for j in jsn if l in j]
#fn_getzipfile(docid)
return i

if __name__ == '__main__':

# 日付
date = datetime.datetime.today().strftime("%Y-%m-%d")
#
date = "2018-06-28"
print( date)

r=fn_rtrv_edinet(date)
print(r)


・まず任意の日付を指定してEDINET API(documents.json)を実行すると、その日に提出された提出書類一覧が取得できる。各書類にはdocidがあるので、このdocidを引数として再度APIを実行して提出書類のZIPを取得する。

・過去の提出書類も取得可能のようである。

※参考

http://itref.fc2web.com/lang/python/edinet.html