🎃

EDIENTから複数の有価証券報告書のPDFファイルを一気に取得する(API version2対応)

2024/05/06に公開

EDINETは、金融庁が公開している有価証券報告書などの電子開示閲覧サイトです。
EDINETのAPIを使えば、複数の有価証券報告書をPDF形式で簡単に取得できます。

この記事ではEDINETのAPI(version2対応)とPythonを使って、複数の有価証券報告書をPDFファイル形式(複数企業対応)で取得する方法をご紹介していきます。

事前準備

API_KEYの設定

GoogleコラボラトリーのシークレットにEDINETのAPI-KEYを保存しておきます。
具体的な保存の方法は以下を参照してください。
https://zenn.dev/robes/articles/04cc622f31c61b

# EDINETAPIのトークンを取得する
from google.colab import userdata

edinet_api_key = userdata.get('EDINET_API_KEY')

 
 

docID(書類管理番号)の取得

EDINETでは一つ一つの有価証券報告書をdocID(書類管理番号)で管理しています。
以下のリンクを参照して、有価証券報告書のdocIDをあらかじめ取得し、edinet_dfに格納します。
https://zenn.dev/robes/articles/f6dfcc5cfbbdb6

 
 

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

import requests
from tqdm.notebook import tqdm
import time

クラスの定義

class GetPDFFromEdinet:

    def __init__(self,docid_list):
        self.docid_list = docid_list

    def get_pdf_file(self):
        for docid in tqdm(self.docid_list):
            # 書類取得APIのエンドポイント
            url = "https://api.edinet-fsa.go.jp/api/v2/documents/" + docid
            print(url)
            time.sleep(5)


            #書類取得APIのパラメータ
            params ={"type":2,"Subscription-Key":edinet_api_key}
            res = requests.get(url,params=params, verify=False)

            filename = docid + ".pdf"

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

クラスの実行

クラスのインスタンス化

docid_listを渡してやります。

gpf = GetPDFFromEdinet(docid_list)

クラスメソッドの実行

gpf.get_pdf_file()

出力結果

Googleコラボのcontentディレクトリ直下にPDFファイルが格納されます。

Discussion