출처:
퀀트투자쿡북 / 저자: 이현열: 5.2 5.2 WICS 기준 섹터정보 크롤링
(혼자한 연습)

0. 필요한 패키지 다운로드
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

여기서 우리는 두 가지 작업을 하고자 함

  1. 어차피 다른 건 관심 없음. 오직 $list만 관심있음
  2. url의 코드명을 수정함으로써 섹터별 자료($list)를 받을 수 있음 → loop을 통한 섹터별 크롤링 가능
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')