No.012 企業の決算書提出情報をPythonを使ってEDINETから取得

1.今回の目的

Pythonを使ってEDINET APIから情報を取得し、pandasのデータフレームで表示します。

2.リファレンス

こちらのサイトを参考に行いました。

EDINET (edinet-fsa.go.jp)

Pythonから金融庁のEDINET APIを使って有価証券報告書を取得する (segakuin.com)

【Python】企業の決算情報をEDINET APIで取得する | 無次元日記 (non-dimension.com)

PythonのRequestsモジュールの使い方【初心者向け】現役エンジニアが解説 | TechAcademyマガジン

【Python】jsonモジュールの使い方 - Qiita

3.Python (Jupyter Notebook)

Pandasライブラリ, requestおよびjsonモジュールを読み込みます。

import pandas as pd
import requests
import json

urlにエンドポイントurlを格納します。
urlはAPI仕様書のp6に記載があります。
paramsにパラメータを設定します。今回は日付を2022-06-27とし、type2を設定します(仕様書のp7参照)。
requestsモジュールのgetメソッドでAPIを呼び出します。

# 書類一覧APIのエンドポイント
url = "https://disclosure.edinet-fsa.go.jp/api/v1/documents.json"

# 書類一覧APIのリクエストパラメータ
params = {
  "date" : '2022-06-27',
  "type" : 2
}

# 書類一覧APIの呼び出し
res = requests.get(url, params=params, verify=False)

# レスポンス(JSON)の表示
print(res.text)

提出書類組織の識別子は"results"です(API仕様書のp13参照)この中に、提出書類が繰り返しで含まれています。中身をjson形式でtextにし、resultsの内容を繰り返し処理で表示してみます(docID, docDescription,filenameのみ)。

#APIの結果をjson形式に変換
res_text = json.loads(res.text)
#res_text内のresultsの内容を取得
results= res_text["results"]
#resultsの中身(docID, docDescription, filerName)を表示
for result in results:
print(result['docID'], result['docDescription'],result['filerName'])

今回は有価証券報告書のみに絞ってみたいと思います。
kessanという空のリストを作って'有価証券報告書'が含まれるdocに絞ります。

kessan = []
for result in results:
    if result['docDescription'] is not None:
        if '有価証券報告書' in result['docDescription']:
            print(result['docID'], result['docDescription'],result['filerName'])
            kessan.append(result)

dfに格納して、件数を見ると335件あるようです。

df = pd.DataFrame(kessan)
df
len(df)

最初の3行だけ見てみます。

df[:3]

27列もあって見にくいので、columnsを絞ります。

columns = [
    'filerName','secCode','docID', 'docTypeCode', 'periodStart',
       'periodEnd', 'submitDateTime', 'docDescription'
       ]
df2=df[columns]
#df2[:3]
df2

以上です。
有価証券報告書の提出リストを作成することができました。

いいなと思ったら応援しよう!