DOM
공공데이터포털의 목록 추출
RLab01
# 웹크롤링(web crawling) : 포털 등에서 자동으로 웹 사이트의 링크 정보를 수집하여 저장하는 기술
# 웹 스크래핑(web scraping) : 웹 사이트로부터 웹문서를 다운로드 받아 필요한 정보를 추출하는 기술.
# R(데이터 추출) <===== 웹사이트(웹문서) : HTML
# 브라우저 HTML문서를 파싱하여 브라우저의 도큐먼트 영역에 랜더링할때 HTML 문서를 구성하는 모든 태그와 속성, 콘텐츠들을 DOM(Document Object Model)이라는 규격을 적용하여 JavaScript 객체를 생성함.
# DOM : 구조화된 문서의 표현 형식.
# 프로그래밍 언어가 특정 부분에 쉽게 접근할수 있도록 함.
# 오픈 API 목록 아이템
# 오픈 API 목록 아이템 설명
# DOM구조
# Element <html>
# |
# |-------Element <head>
# |-------Element <body>
# |
# |----Element <div>
# |
# |----ul
# |
# |---li
# |
# |--Element <span> --------Attribute
# class="title" : 오픈 API 목록 아이템 제목
# 공공데이터포털의 목록 추출
# 1) 웹페이지 URL 설정
# 2) 웹페이지 읽기 : read_html()
# 3) 목록 아이템 제목 추출 : html_nodes()
# 4) 목록 아이템 개요 추출 : html_nodes()
# 5) 데이터 정제 : gsub()
# 6) 데이터 출력 : data.frame()
# 패키지 설치 및 로딩
install.packages("rvest")
library(rvest)
# 웹문서 읽기
url <- "https://www.data.go.kr/tcs/dss/selectDataSetList.do"
html <- read_html(url)
html
# 목록 아이템 추출
title <- html_nodes(html, "#apiDataList .title") %>%
html_text()
title
# 목록 아이템 설명 추출
# html_text() : html문서에서 노드내의 데이터를 추출
desc <- html_nodes(html, "#apiDataList .ellipsis") %>%
html_text()
desc
# 데이터 정제 : 제어문자를 공백으로 대체
# gsub() : html문서에서 노드 추출
title <- gsub("[|\r|\n|\t]", "",title)
title
# 데이터 출력
api <- data.frame(title, desc)
api