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ファイルを分析可能な形に整頓していく前処理を行う。