RでEDINETから財務データを入手・分析する~③書類取得編~
記事一覧
はじめに
本記事はdocID取得編の続きであり、3番目の記事にあたる。本記事で行う作業は、前記事で取得したdocIDに紐づく書類のXBRLデータを入手し、zipファイルとして保存することである。EDINETで公開されている『EDINET API仕様書』を読んでいることを前提とする。
また、本ブログの執筆に際してこちらの記事を参考にさせていただいた。
書類取得API
手順は前記事とおおむね同じである。docIDとリクエストパラメータを加えたリクエストにより、指定した書類のバイナリデータを取得する。
取得情報
設定可能なリクエストパラメータとして、以下の4つがある。
type=1
- 提出本文書及び監査報告書を取得する。本ブログでは有価証券報告書を利用するため、このパラメータを指定する。
type=2
- PDFを取得する。企業の有報サンプルが多数ほしい場合は有用であるが、使ったことはない。
type=3
- 代替書面と添付文書を取得する。使ったことはない。
type=4
- 英文ファイルを取得する。使ったことはない。
注意事項
本記事においては"2019-06-28"に提出された361の有報を取得する。for文により取得するが、その際は過剰アクセスを避けるために、1つにつき10秒のクールタイムを設ける。また、参考にしたこちらの記事に倣い、Rのコードはコピペでそのまま動かないようになっている。具体的には、書類取得APIのURLとリクエストパラメータについて省いている。それらは『EDINET API仕様書』に記載されているため、本記事の手順はそちらを読まなければ再現不可能である。
Rによる実装
手順
詳細な流れは以下の通りである。
レスポンスのバイナリーデータを変数に格納後、zipファイルとして保存する。ファイル名は"docID.zip"とする。
書類を取得できた企業の名前、docID等を別途(ファイル構造としての)zipファイル内に"downloaded_XBRL.csv"として保存する。これは書類の取得に伴い更新されていく。
インプットであるdocIDのベクトルの、何番目までを取得できたかについてConsoleに表示する。
変数をクリーンアップする。
1~5の手順を、インプットであるdocIDのベクトルの長さだけ繰り返す。
なお、途中でエラーが発生し書類の取得が中断された場合に備え、インプットであるdocIDのベクトルの、任意の場所から開始できるようにしている。
コード
上記手順に倣った関数を以下に与える。
data_tidy <- read_csv(dir(path_filing, ".csv", full.names = TRUE)) # 前記事のdocID.csvを読み込む docID <- data_tidy %>% purrr::pluck("docID") get_zip_via_EDINET <- function(data_tidy, docID, path_zip, start, end) { url_api <- "URL" url_type <- "リクエストパラメータ" i <- as.integer(start - 1L) for(id in docID[start:end]) { ## 過剰アクセス注意 ## Sys.sleep(10) ## ## i <- i + 1L get_binary <- getBinaryURL(str_c(url_api, id, url_type)) writeBin(get_binary, str_c(path_zip, "/", id, ".zip")) if(file.exists(str_c(path_zip, "/downloaded_XBRL.csv"))) { data_tidy %>% filter(docID == id) %>% write_excel_csv(path = str_c(path_zip, "/downloaded_XBRL.csv"), append = TRUE) } else { data_tidy %>% filter(docID == id) %>% write_excel_csv(path = str_c(path_zip, "/downloaded_XBRL.csv"), append = FALSE) } print(str_c(i, now(), sep = ", ")) rm(get_binary) } rm(list = ls(pattern = "^url|^id$")) } get_zip_via_EDINET(data_tidy, docID, path_zip, start = 1L, end = length(docID))
zipフォルダ内に、書類のzipファイルと"downloaded_XBRL.csv"が保存されていれば成功である。
おわりに
次回の記事では、本記事で取得した書類のzipファイルを分析可能な形に整頓していく前処理を行う。