출처:
퀀트투자쿡북 / 저자: 이현열: 5.2 5.2 WICS 기준 섹터정보 크롤링
(혼자한 연습)
library(rvest)
library(httr)
library(tidyverse) #dplyr을 받아야 %>%(pipeline)을 사용할 수 있음
목표: 와이즈인덱스 데이터 크롤링
library(jsonlite) #fromJSON 함수가 들어있는 패키지
url <- paste0(
'http://www.wiseindex.com/Index/GetIndexComponets',
'?ceil_yn=0&dt=20190607&sec_cd=G10') #그냥 주소를 박으면 됨
data <- fromJSON(url) #list file
lapply(data, print(head)) #리스트 카트 별 적용시키고 싶으므로
## function (x, ...)
## UseMethod("head")
## <bytecode: 0x0000000018526308>
## <environment: namespace:utils>
## $info
## $info$TRD_DT
## [1] "/Date(1559833200000)/"
##
## $info$MKT_VAL
## [1] 19850082
##
## $info$TRD_AMT
## [1] 70030
##
## $info$CNT
## [1] 23
##
##
## $list
## IDX_CD IDX_NM_KOR ALL_MKT_VAL CMP_CD CMP_KOR MKT_VAL WGT
## 1 G10 WICS 에너지 19850082 096770 SK이노베이션 9052841 45.61
## 2 G10 WICS 에너지 19850082 010950 S-Oil 3403265 17.14
## 3 G10 WICS 에너지 19850082 267250 현대중공업지주 2873204 14.47
## 4 G10 WICS 에너지 19850082 078930 GS 2491805 12.55
## 5 G10 WICS 에너지 19850082 067630 에이치엘비생명과학 624986 3.15
## 6 G10 WICS 에너지 19850082 006120 SK디스커버리 257059 1.30
## S_WGT CAL_WGT SEC_CD SEC_NM_KOR SEQ TOP60 APT_SHR_CNT
## 1 45.61 1 G10 에너지 1 2 56403994
## 2 62.75 1 G10 에너지 2 2 41655633
## 3 77.23 1 G10 에너지 3 2 9283372
## 4 89.78 1 G10 에너지 4 2 49245150
## 5 92.93 1 G10 에너지 5 2 39307272
## 6 94.22 1 G10 에너지 6 2 10470820
##
## $sector
## SEC_CD SEC_NM_KOR SEC_RATE IDX_RATE
## 1 G25 경기관련소비재 16.05 0
## 2 G35 건강관리 9.27 0
## 3 G50 커뮤니케이션서비스 2.26 0
## 4 G40 금융 10.31 0
## 5 G10 에너지 2.37 100
## 6 G20 산업재 12.68 0
##
## $size
## SEC_CD SEC_NM_KOR SEC_RATE IDX_RATE
## 1 WMI510 WMI500 대형주 69.40 89.78
## 2 WMI520 WMI500 중형주 13.56 4.44
## 3 WMI530 WMI500 소형주 17.04 5.78
여기서 우리는 두 가지 작업을 하고자 함
sector_code <-
c('G25', 'G35', 'G50', 'G40', 'G10',
'G20', 'G55', 'G30', 'G15', 'G45')
data_sector <- list() #여기에 우선 섹터별 자료를 넣을 것임. 나중에 do.call로 합칠 것임.
for (i in sector_code) {
url <- paste0(
'http://www.wiseindex.com/Index/GetIndexComponets',
'?ceil_yn=0&dt=20190607&sec_cd=', i)
data <- fromJSON(url)
data <- data$list
data_sector[[i]] <- data
Sys.sleep(1)
}
data_sector <- do.call(rbind, data_sector)
data_sector %>% head()
## IDX_CD IDX_NM_KOR ALL_MKT_VAL CMP_CD CMP_KOR MKT_VAL
## G25.1 G25 WICS 경기관련소비재 141374708 005380 현대차 20042076
## G25.2 G25 WICS 경기관련소비재 141374708 012330 현대모비스 14257881
## G25.3 G25 WICS 경기관련소비재 141374708 051900 LG생활건강 12135339
## G25.4 G25 WICS 경기관련소비재 141374708 000270 기아차 10508842
## G25.5 G25 WICS 경기관련소비재 141374708 090430 아모레퍼시픽 5576940
## G25.6 G25 WICS 경기관련소비재 141374708 021240 웅진코웨이 4481408
## WGT S_WGT CAL_WGT SEC_CD SEC_NM_KOR SEQ TOP60 APT_SHR_CNT
## G25.1 14.18 14.18 1 G25 경기관련소비재 1 12 143157685
## G25.2 10.09 24.26 1 G25 경기관련소비재 2 12 64808552
## G25.3 8.58 32.85 1 G25 경기관련소비재 3 12 9370918
## G25.4 7.43 40.28 1 G25 경기관련소비재 4 12 255378909
## G25.5 3.94 44.22 1 G25 경기관련소비재 5 12 30983000
## G25.6 3.17 47.39 1 G25 경기관련소비재 6 12 56087710
data_sector %>% tail()
## IDX_CD IDX_NM_KOR ALL_MKT_VAL CMP_CD CMP_KOR MKT_VAL WGT S_WGT
## G45.569 G45 WICS IT 376270891 227950 마이크로텍 11634 0 99.99
## G45.570 G45 WICS IT 376270891 067770 세진티에스 11314 0 99.99
## G45.571 G45 WICS IT 376270891 121850 코이즈 10421 0 99.99
## G45.572 G45 WICS IT 376270891 067730 로지시스 10223 0 99.99
## G45.573 G45 WICS IT 376270891 008110 대동전자 9808 0 100.00
## G45.574 G45 WICS IT 376270891 033200 모아텍 9300 0 100.00
## CAL_WGT SEC_CD SEC_NM_KOR SEQ TOP60 APT_SHR_CNT
## G45.569 1 G45 IT 569 2 7410362
## G45.570 1 G45 IT 570 2 4114331
## G45.571 1 G45 IT 571 2 4950435
## G45.572 1 G45 IT 572 2 3362732
## G45.573 1 G45 IT 573 2 2412803
## G45.574 1 G45 IT 574 2 2006366
csv로 저장한다.
write.csv(data_sector, 'data/KOR_sector.csv')