경기도 인공지능 개발 과정/R

R 크롤링 - 2

agingcurve 2022. 4. 27. 15:12
반응형

url <- "https://www.data.go.kr/tcs/dss/selectDataSetList.do"문자 추출을 위한 DOM 구조의 이해 4 

- DOM(Document Object Model) - 구조화된 문서의 표현 형식 - 프로그래밍 언어가 특정 부분에 쉽게 접근할 수 있도록 함

- 공공데이터포털(www.data.go.kr)의 오픈 API 목록 추출 예

 

html 요소 탐색

공공데이터포털의 목록 추출(단일 페이지)

 

패키지 설치

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