프로젝트

02. R로 웹크롤링(전세계 코로나 확진자 수 크롤링, 크롬) (R)

기계학습점쟁이 2022. 6. 9. 13:02

웹크롤링은 3단계로 나뉜다.

요청 -> 추출 -> 저장

조금 자세한 내용은 코드를 보면서.

install.packages("tidyverse") #맨날 쓰는 그거... 파이프 연산자나 데이터 읽기, 정리등을 위해 필요함
install.packages("httr")
install.packages("rvest")
install.packages("jsonlite")

library(tidyverse)
library(httr)
library(rvest)
library(jsonlite)

res <- GET(
  url = 'http://ncov.mohw.go.kr',
  path = '/bdBoardList_Real.do',
  query = list('brdId' = '1',
               'brdGubun' = '14')
)

print(x = res)
class(x = res)

#크롬 개발자 모드에서 표에 커서를 올려놓으면 관련 코드가 푸른색으로 뜸. 아래와 같이 가공하세요.
tbl <- res %>%
  read_html() %>%
  html_node(css = 'div.data_table.mgt16 > table.num') %>%
  html_table(fill = TRUE)

tbl[, 3:4] <- tbl$`환자발생 수 (사망)` %>% 
  str_remove_all(pattern = '[\r\n\t,]+') %>% 
  str_split(pattern = '명\\(사망', n = 2, simplify = TRUE)

colnames(x = tbl) <- c('대륙', '국가', '감염자', '사망자')

tbl$ `감염자` <- str_remove(string = tbl$ `감염자`, pattern = '명')
tbl$ `사망자` <- str_remove(string = tbl$ `사망자`, pattern = '\\)')

tbl[, 3:4] <- map_df(.x = tbl[, 3:4], .f = as.numeric)

getwd()
setwd(dir = './data')

#rds로 저장하기
saveRDS(object = tbl, file = 'Corona_20220415.RDS')

#엑셀로 저장하기
install.packages("writexl")
library(writexl)
write_xlsx(x = tbl, path = 'Corona_20220415.xlsx')
 

엑셀로도 가능하지만 단순반복노동수준을 낮출 수 있음. 쉽게 업데이트 가능함.

결과는 아래에.

엑셀로도 변환 가능하다.

엑셀은 이런 식으로...