MENU



EDINETのAPIを使って企業の財務情報を取得する①:PythonとEDINETのAPIを使って提出書類一覧をCSVで取得する

ども♪マコトです。

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()

私の環境でうまく行ったので他の環境でもうまくいくはず。

今、松井証券、DMM、でお得なキャンペーンが行われています。
相場が低迷している今こそ小さな金額から投資を始めるのはいいかもしれません。

松井証券FX 新規口座開設獲得プロモーション
漫画★全巻ドットコム
【DMM FX】入金
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次