url <- "https://www.data.go.kr/tcs/dss/selectDataSetList.do"문자 추출을 위한 DOM 구조의 이해 4
- DOM(Document Object Model) - 구조화된 문서의 표현 형식 - 프로그래밍 언어가 특정 부분에 쉽게 접근할 수 있도록 함
- 공공데이터포털(www.data.go.kr)의 오픈 API 목록 추출 예
공공데이터포털의 목록 추출(단일 페이지)
패키지 설치
install.packages("rvest")
library(rvest)
※ 참고
gsub 사용방식
@ gsub(변경,으로 ,df)
@ 원본데이터 %>% gsub(변경,으로, ., fixed=TRUE)
url <- "https://www.data.go.kr/tcs/dss/selectDataSetList.do"
html <- read_html(url)
html
# 목록 아이템 제목 추출
title <- html_nodes(html, "#apiDataList .title") %>%
html_text()
title
# 목록 아이템 개요 추출
desc <- html_nodes(html, "#apiDataList .ellipsis") %>%
html_text()
desc
# 데이터 정제
title <- gsub("[|\r|\n|\t]","",title)
title
desc <- gsub("[|\r|\n|\t]","",desc)
desc
# 데이터 출력
api <- data.frame(title, desc)
api
네이버 영화 리뷰 추출 (단일 페이지)
# 웹문서 읽기
url <- "https://movie.naver.com/movie/point/af/list.naver"
html <- read_html(url)
html
# 리뷰 셀 추출
revie_cell <- html_nodes(html, "#old_content table tr .title")
revie_cell
# 평점 추출
scrore <- html_nodes(revie_cell,"em") %>%
html_text()
scrore
# 리뷰 셀 추출
review <- revie_cell %>%
html_text()
review
# 리뷰 데이터 정제
# (1) 리뷰 앞 공통부분이 있는 위치
index.start <- regexpr("\t별점 -", review)
index.start
# (1) 리뷰 뒤 공통부분이 있는 위치
index.end <- regexpr("\t신고",review)
index.end
# (2) 리뷰 추출
review <- substring(review, index.start, index.end)
review
# (3) 제어문자 제거(제어문자를 공백으로 대체)
review <- gsub("[\n|\t]", "",review)
review
# (4) 리뷰 좌우 공백 제거
review <- trimws(review,"both")
review
웹페이지별 리뷰 추출 반복
url.page <- "https://movie.naver.com/movie/point/af/list.naver?&page="
# 시작과 끝 페이지
page.start <-1
page.end <- 5
# 페이지별 리뷰 통합
review.page <- NULL
# 시작부터 끝페이지까지 반복
for(p in page.start:page.end) {
# 페이지 URL 설정
url <- paste(url.page, p, sep="")
## 8.4절과 동일:시작
# 웹문서 읽기
html <- read_html(url)
# 리뷰 셀 추출
review_cell <- html_nodes(html, "#old_content table tr .title")
# 평점 추출
score <- html_nodes(review_cell,"em") %>%
html_text()
# 리뷰 추출
review <- review_cell %>%
html_text()
# 리뷰 데이터 정제
# (1) 리뷰 부분 추출 색인
index.start <- regexpr("\t별점 -", review)
index.end <- regexpr("\t신고", review)
# (2) 리뷰 추출
review <- substring(review, index.start, index.end)
review <- substring(review, 16)
# (3) 제어문자 제거
review <- gsub("[|\n|\t]","", review)
# (4) 리뷰 좌우 공백 제거
review <- trimws(review, "both")
# 각 페이지의 리뷰 저장
review.page <- c(review.page, review)
}
review.page
'경기도 인공지능 개발 과정 > R' 카테고리의 다른 글
R 군집분석 & 연관분석 (0) | 2022.05.03 |
---|---|
R R 마크다운(Rpubs) (0) | 2022.05.02 |
R 웹 크롤링 (0) | 2022.04.26 |
R 웹 크롤링(HTML 기본문법) (0) | 2022.04.26 |
R 지도시각화 (0) | 2022.04.25 |