🐈

【Python】EDINETのAPIを使って有価証券報告書をXBRL形式で取得する

2022/07/17に公開

2024年4月よりEDINETのAPIの仕様がversion2に変更になっています。
XBRLファイルの取得とテキストデータの抽出については、以下のリンクをご確認ください。
https://zenn.dev/robes/articles/b7be539b65ee9d

はじめに

EDINETは、金融庁が公開している有価証券報告書などの電子開示閲覧サイトです。
有価証券報告書をPDF形式でダウンロードしたり、XBRL形式でデータとして直接取得することも可能です。
ここではEDINETのAPIとPythonを使って、有価証券報告書をXBRL形式で取得する方法をご紹介していきます。

0. 書類管理番号(docid)の取得

EDINETで有価証券報告書を取得するためには、その書類管理番号(docid)を特定する必要があります。
書類管理番号は、企業や提出日、提出書類の内容によって一意に定まっているものです。
この書類管理番号を取得する方法は以下のリンクに記載しています。
https://zenn.dev/robes/articles/bb7ea6202af81c

1. 必要なライブラリのインポート

必要なライブラリをインポートします。
requestsを使用します。

import requests

2. パラメータの設定

書類管理番号(docID)、APIのエンドポイント、APIのリクエストパラメータを設定します。

# 書類管理番号
docid = "S100FIZV"

# 書類取得APIのエンドポイント
url = "https://disclosure.edinet-fsa.go.jp/api/v1/documents/" + docid

# 書類取得APIのリクエストパラメータ
params = {
  "type" : 1
}

3. ZIPファイルの取得

EDINETのAPIを使って、ファイル名「docID.zip」で取得します。

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

# 出力ファイル名
filename = docid + ".zip"

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

4. ZIPファイルの解凍

import zipfile
with zipfile.ZipFile('./'+docid+'.zip') as zip_f:
        zip_f.extractall('./'+docid)
    

docidフォルダ内に以下のファイルが取得できています。
このあと、PublicDoc内にある「.xbrlファイル」を使って、テキストデータを取得していきます。

<S100O02E>
   └<XBRL>
     ├<PublicDoc>
     │ ├0105400_honbun_jpcrp030000-asr-001_E03219-000_2022-02-20_01_2022-05-12_ixbrl.htm
     │ ├jpcrp030000-asr-001_E03219-000_2022-02-20_01_2022-05-12_lab-en.xml
     │ ├0101010_honbun_jpcrp030000-asr-001_E03219-000_2022-02-20_01_2022-05-12_ixbrl.htm
     │ ├0105410_honbun_jpcrp030000-asr-001_E03219-000_2022-02-20_01_2022-05-12_ixbrl.htm
     │ ├0106010_honbun_jpcrp030000-asr-001_E03219-000_2022-02-20_01_2022-05-12_ixbrl.htm
     │ ├jpcrp030000-asr-001_E03219-000_2022-02-20_01_2022-05-12_lab.xml
     │ ├<fuzoku>
     │ │ └50_0325900102205.gif
     │ ├0105000_honbun_jpcrp030000-asr-001_E03219-000_2022-02-20_01_2022-05-12_ixbrl.htm
     │ ├0105420_honbun_jpcrp030000-asr-001_E03219-000_2022-02-20_01_2022-05-12_ixbrl.htm
     │ ├0105430_honbun_jpcrp030000-asr-001_E03219-000_2022-02-20_01_2022-05-12_ixbrl.htm
     │ ├manifest_PublicDoc.xml
     │ ├0105330_honbun_jpcrp030000-asr-001_E03219-000_2022-02-20_01_2022-05-12_ixbrl.htm
     │ ├jpcrp030000-asr-001_E03219-000_2022-02-20_01_2022-05-12_cal.xml
     │ ├0103010_honbun_jpcrp030000-asr-001_E03219-000_2022-02-20_01_2022-05-12_ixbrl.htm
     │ ├jpcrp030000-asr-001_E03219-000_2022-02-20_01_2022-05-12_pre.xml
     │ ├0105310_honbun_jpcrp030000-asr-001_E03219-000_2022-02-20_01_2022-05-12_ixbrl.htm
     │ ├jpcrp030000-asr-001_E03219-000_2022-02-20_01_2022-05-12_def.xml
     │ ├0102010_honbun_jpcrp030000-asr-001_E03219-000_2022-02-20_01_2022-05-12_ixbrl.htm
     │ ├0107010_honbun_jpcrp030000-asr-001_E03219-000_2022-02-20_01_2022-05-12_ixbrl.htm
     │ ├0201010_honbun_jpcrp030000-asr-001_E03219-000_2022-02-20_01_2022-05-12_ixbrl.htm
     │ ├jpcrp030000-asr-001_E03219-000_2022-02-20_01_2022-05-12.xbrl
     │ ├0000000_header_jpcrp030000-asr-001_E03219-000_2022-02-20_01_2022-05-12_ixbrl.htm
     │ ├0105340_honbun_jpcrp030000-asr-001_E03219-000_2022-02-20_01_2022-05-12_ixbrl.htm
     │ ├0105320_honbun_jpcrp030000-asr-001_E03219-000_2022-02-20_01_2022-05-12_ixbrl.htm
     │ ├0104010_honbun_jpcrp030000-asr-001_E03219-000_2022-02-20_01_2022-05-12_ixbrl.htm
     │ └jpcrp030000-asr-001_E03219-000_2022-02-20_01_2022-05-12.xsd
     └<AuditDoc>
       ├jpaud-aai-cn-001_E03219-000_2022-02-20_01_2022-05-12.xbrl
       ├jpaud-aai-cn-001_E03219-000_2022-02-20_01_2022-05-12.xsd
       ├manifest_AuditDoc.xml
       ├jpaud-aai-cn-001_E03219-000_2022-02-20_01_2022-05-12_ixbrl.htm
       ├jpaud-aai-cn-001_E03219-000_2022-02-20_01_2022-05-12_def.xml
       └jpaud-aai-cn-001_E03219-000_2022-02-20_01_2022-05-12_pre.xml

5. さいごに

いったん、XBRL形式のファイルを取得することができました。
このあと、PublicDoc内にある「.xbrlファイル」を使って、テキストデータを取得していきます。

Discussion