반응형
오늘은 저번에 이어 상장기업 전체 재무제표를 가져와 보도록 하겠습니다!
아래글을 참고해서 상장기업 고유번호를 가지고 오신 후 글을 이어보시면 됩니다.
2020/12/02 - [크롤링/[R]] - [R] OpenDART API 크롤링 (1) - 상장기업 고유번호 가져오기
0. 필요한 라이브러리 설치
library(jsonlite)
library(tibble)
library(diplyr)
1. Request 해야 할 인자 알아보기
일단, 어떤 URL을 가지고 오기 위한 요청 인자에 무엇이 있는지 알아보도록 하겠습니다.
1) 개인 OpenaPI 인증키
2) 기업의 고유 번호
3) 사업 연도
4) 보고서의 종류
5) 연결 재무제표 여부
이렇게 총 5가지를 요청인자로 써야함을 알 수 있습니다.
2. 요청인자 바꿔주기
사용자가 더욱 간단하게 요청인자를 사용할 수 있게 만들기 위해 몇몇 함수를 통해 위를 바꿔주도록 하겠습니다.
요청인자 | 설명 |
corpname | 기업명 |
reprt_name | 보고서명 (y : 사업보고서 / h : 반기보고서 / q1 : 1분기 보고서 / q3 : 3분기 보고서) |
consolid | 연결재무제표 여부 (c : 연결재무제표, nc : 재무제표) |
corp_code <- read.csv('기업_고유번호.csv')
# 기업고유번호
change_corpname <- function(corp_name){
corpcode <- corp_code %>%
filter(corpname == corp_name) %>%
select('corpcode') %>% as.character()
return(corpcode)
}
# 보고서코드
change_labels <- function(reprt_name){
x = ''
if (reprt_name == 'y'){
x = '11011'
} else if (reprt_name == 'h'){
x = '11012'
} else if (reprt_name == 'q1'){
x = '11013'
} else if (reprt_name == 'q3'){
x = '11014'
}
return(x)
}
# 연결재무제표 여부
consolid_or_not <- function(consolid){
x = ''
if (consolid == 'c'){
x = 'CFS'
} else if (consolid == 'nc'){
x = 'OFS'
}
return(x)
3. 재무제표 가져오기
바꾼 요청인자와 원래 요청인자를 모두 넣고, 다음 함수를 실행하면 단일기업이 전체 재무제표를 볼 수 있습니다.
# 사업, 반기, 분기 보고서
report_earning1 <- function(crtfc_key, corp_name, bsns_year, reprt_name, consolid){
reprt_code <- change_labels(reprt_name)
fs_div <- consolid_or_not(consolid)
corp_code <- change_corpname(corp_name)
res <- httr::GET(url = 'https://opendart.fss.or.kr/api/fnlttSinglAcntAll.json',
query = list(crtfc_key = I(x = crtfc_key),
corp_code = corp_code,
bsns_year =bsns_year,
reprt_code = reprt_code,
fs_div = fs_div ))
data <- fromJSON(res$url)
report <- data$list
return(tibble(report))
}
4. Test 코드
결과 예시입니다!
crtfc_key <- "본인의 인증키"
corp_name <- "삼성전자"
bsns_year <- "2019"
reprt_name <- "y"
consolid <- "c"
data1 <- report_earning1(crtfc_key, corp_name, bsns_year, reprt_name, consolid)
head(data1)
아래 링크는 위의 함수가 들어있는 R 패키지 링크입니다!
github.com/mrobo2016/KFinReport
반응형
'etc > Crawling' 카테고리의 다른 글
[R] OpenDART API 크롤링 (1) - 상장기업 고유번호 가져오기 (0) | 2020.12.02 |
---|---|
[Python] 다트(DART) 오픈 API 공시(재무제표) 크롤링(Crawling) (0) | 2020.10.16 |