emart 매장 정보 얻기

2019. 4. 26. 11:45R/Web Crawling

emart의 전국 매장 정보와 상태를 수집

 

점포찾기 > 메인

 

store.emart.com

매장 하나의 정보가 저장되는 node의 패턴은 아래와 같다 

 

li:nth-child(5)

 

위 숫자가 1에서 399까지 존재한다

 

가장 많은 정보를 담고 있는 점포는 5개의 상황을 담고 있는 킨텍스점이다.

따라서 변수가 점포 이름을 포함하여 6개가 되어야 한다

 

 

 

####################################################
## get function
####################################################

url <- 'https://store.emart.com/main/holiday.do'
web.scrap <- read_html(url)

download.file(url, destfile = "emart.html", quiet = T)
test <- read_html("emart.html")
emart.list <- NULL

get.emart.branch <- function(x){
  raw <- matrix(nrow = 399, ncol = 6) %>% as.tibble
  name <- c("store", "situation1", 
            "situation2", "situation3", 
            "situation4", "situation5")
  colnames(raw) <- name
  temp <- NULL
  for(i in 1:399){
    sel <- 'li:nth-child(' #i )
    node <- paste0(sel, i, ')')
    temp <- x %>% html_nodes(node) %>% 
      html_text %>% as.tibble %>% 
      mutate(length = str_length(value)) %>% 
      filter(length == max(length)) %>% 
      select(-length) %>% 
      str_trim(side = c("both")) %>% 
      str_replace_all('\\r|\\t|\\n','@') %>% 
      str_replace_all('\\s{2,}','') %>% 
      str_replace_all('[@]+','@') %>% as.tibble %>% 
      separate(value, name, sep = '@') %>% 
      as.tibble
    for(j in 1:6){
      raw[i,j] <- temp[1,j]
    }
  }
  emart.list <- raw %>% as.tibble() %>% View(list)
  write_csv(emart.list, 'emart.csv', col_names = T)
}