R/강의복습

[22.08.23] 11일차 데이터크롤링 ( 영화 평점 가져오기 )

peach_h 2022. 9. 3. 18:00
네이버 영화 평점 가져오기
# 네이버 영화 url
url = "https://movie.naver.com/movie/point/af/list.naver"
html <- read_html(url)
제목 가져오기

제목이 있는 부분을 찾아 가져온다.

# 영화 제목
nodes <- html_nodes(html, " a.movie.color_b")
title <- html_text(nodes)
title

# 별점 가져오기
score <- html_nodes(nodes,"em")
score <- html_text(num)
score

제목과 별점을 잘 가져온 모습 !

 

 

but .. 제목이랑 평점은 잘가져와졌는데 리뷰내용이 따로 지정하기가 힘들었다.

그래서 평점 박스를 통으로 가져와서 리뷰내용을 걸러내기로 함

 

평점박스 통으로 가져오기
nodes <- html_nodes(html, "table.list_netizen > tbody > tr > td.title")
contents <- html_text(node)
contents

 

필요없는 부분 없애기
contents <- gsub("\t", "", contents)
contents

" /t " 를 없애준다

 

데이터 쪼개기
contents <- strsplit(contents, "\\n")
contents <- unlist(contents)
contents

strsplit( ) 함수를 이용해서 데이터를 //n 기준으로 쪼개준다.

strsplit( ) 함수 실행 후, list가 된 데이터를 unlist로 풀어준다.

contents<-contents[11]
contents

11번째에 리뷰내용이 있음을 확인하고, contents[11]을 불러오면 리뷰내용만 가져오기 성공 !

 

 

영화 제목, 평점, 리뷰 가져오기
nodes <- html_nodes(html, " table > tbody > tr > td.title")

for (node in nodes){
  title_node <- html_nodes(node, "a.movie") 
  title <- html_text(title_node)
  
  score_node <- html_nodes(node, "em") 
  score <- html_text(score_node)
  
  contents <- html_text(node)
  contents <- gsub("\t", "", contents)
  #print(contents)
  contents <- strsplit(contents, "\\n")
  contents <- unlist(contents)
  # 여기에 리뷰가 있음
  contents<-contents[11]
  #print(contents)
  
  cat("제목 : ", title, "\n")
  
  cat("평점 : ", score, "\n")
  cat("내용 : ", contents, "\n")
}

for 문으로 제목, 평점, 리뷰를 모두 묶어주고 실행하면 끝이다 !

for 문은 아직 익숙하지 않기 때문에 더 공부해야할 것으로 예상..