📝

【Python】EDINETの書類管理番号(docid)を取得する

2022/07/17に公開約2,300字

はじめに

EDINETは、金融庁が公開している有価証券報告書などの電子開示閲覧サイトです。
有価証券報告書をPDF形式でダウンロードしたり、XBRL形式でデータとして直接取得することも可能です。
ここではEDINETから有価証券報告書をPDF形式やXBRL形式で取得するために必要な書類管理番号(docid)を取得する方法をご紹介します、

1. ライブラリのインポート

必要なライブラリをインポートします

import datetime
import requests
import pandas as pd

2. 提出日を期間指定

取得したい有価証券報告書の提出日(企業がEDINETに提出した日)をstart_dateとend_dateで期間指定します。

start_date = datetime.date(2022, 5, 1)
end_date = datetime.date(2022, 6,30)

3.日付リストの作成

対象期間の日付リストを作成します

period = end_date - start_date
period = int(period.days)
day_list = []
for d in range(period):
    day = start_date + datetime.timedelta(days=d)
    day_list.append(day)
    
day_list.append(end_date)

4. 書類一覧の取得

一連のプログラムの肝です。
対象期間にEDINETに提出された書類一覧(メタデータ)を取得します。

#結果を格納するための空のリストを用意します
report_list =[]
#日付リストの期間に提出された書類のメタデータを取得してjson形式に変換します
for day in day_list:
    url = "https://disclosure.edinet-fsa.go.jp/api/v1/documents.json"
    params = {"date": day, "type": 2}
    res = requests.get(url, params=params)
    json_data = res.json()

    for num in range(len(json_data["results"])):
        ordinance_code= json_data["results"][num]["ordinanceCode"]
        form_code= json_data["results"][num]["formCode"]
        
	#ordinance_code=010かつform_code=030000が有価証券報告書になります
        if ordinance_code == "010" and  form_code =="030000" :
            company_name=json_data["results"][num]["filerName"]
            edi={ '会社名':company_name,
                        '書類名':json_data["results"][num]["docDescription"],           
                        'docID':json_data["results"][num]["docID"],
                        '証券コード':json_data["results"][num]["secCode"],
                        '日付': day             }
            report_list.append(edi)

5.取得結果の表示

pandasでデータフレーム化します。

df = pd.DataFrame(report_list)
df

ちゃんととれています。

6.docIDの取得

あとは証券コードや会社名を指定してdocIDを取得します

docid =df[df['証券コード'] == '83160']['docID']
docid

7. さいごに

これで書類管理番号(docID)が取得できたので、実際にEDINETから有価証券報告書を取得していきます。

Discussion

ログインするとコメントできます