[R] 주식 투자를 위한 재무제표 수집 생활 밀착형 데이터 분석

아래 코드는 https://github.com/mrchypark/sejongFinData 에서 발췌하였습니다. 
세종 기업 데이터에서 재무제표를 웹에 게시하고 있습니다. 

여기서 삼성 전자를 검색해보니 1997년 데이터부터 제공을 하고 있더라고요.

일단, 기업의 종목번호 정보를 파악해야 합니다. http://www.sejongdata.com/query/value.html 여기에 보면 기업명과 종목번호정보 및 시가총액 등의 정보를 파악할 수 있습니다. 

아래는 이 테이블을 R로 읽어오기 위한 코드입니다.

if (!require("rvest")) install.packages("rvest")
if (!require("stringi")) install.packages("stringi")
install.packages("selectr")
print("packages install done")
library(rvest)
library(stringi)


url <- "http://www.sejongdata.com/query/value.html"

tem <- read_html(url,encoding = "UTF-8")
dat <- tem %>% html_nodes(".bus_board_txt1") %>% html_text
tit <- tem %>% html_nodes('.bus_board_tit1') %>% html_text

codeData<-data.frame(matrix(dat,ncol=5, byrow=T))
names(codeData)<-tit
rm(dat,tem,tit,url)
codeData<-codeData[,c(1,2)]


각 회사의 요약재무정보 테이블을 수집합시다. http://www.sejongdata.com/business_include_fr/table_main0_bus_01.html 이 페이지에서 보기 우해 종목 코드와 기간 1997~2007, 2008~2017 2페이지로 나눠져 있는 테이블을 수집해야합니다. 이를 위해 우선 테이블을 읽는 함수를 만듭니다. 

getTable <- function(url=url){
  
  tem <- read_html(url,encoding = "UTF-8")
  dat <- tem %>% html_nodes(".bus_board_txt1") %>% html_text
  tit <- tem %>% html_nodes('.bus_board_tit1') %>% html_text
  
  tit <- stri_trim_both(tit)
  tit <- tit[1:(which(nchar(tit)==0)[2]-1)]
  tit <- gsub(" ","",tit)
  tit <- gsub("[u00A0]","",tit)
  year <- tit[-1]
  
  dat<-data.frame(t(matrix(dat,nrow=16, byrow=T)),stringsAsFactors = F)
  names(dat)<-dat[1,]
  dat<-dat[-1,]
  dat<-cbind(year,dat)
  return(dat)
}


이제 종목 번호 데이터를 이용하여 20년치 데이터를 수집하는 과정을 나타냅니다. 

dataAll<-c()

for(i in 1:nrow(codeData)){
  for(j in 1:2){
    
    url <- paste0("http://www.sejongdata.com/business_include_fr/table_main0_bus_01.html?no=",
                  codeData[i,1],"&gubun=",j)
    tem <- getTable(url)
    tem <- data.frame(country=codeData[i,2],tem)
    dataAll <- rbind(dataAll,tem)
    print(paste0(i," / ",nrow(codeData)," / ",j))
  }
}

아래 과정이 끝나면 dataAll 이라는 데이터프레임 형태의 데이터를 획득할 수 있습니다.


지금까지 각 회사의 재무 정보를 수집하는 방법에 대해 알아보았습니다. 모두 부자 되세요~^^

덧글

댓글 입력 영역

와이드 애드센스