getwd() 명령어를 스크립트창에 입력
getwd()
## [1] "/Users/shinhaenglee/Dropbox/2018_Class_Teaching/Capstone"
위의 코드를 입력하면, 현재 작업 폴더의 경로가 콘솔창에 나오게 됨 [1] "/Users/shinhaenglee/Dropbox/2018_Class_Teaching/Capstone"
*원할 경우, setwd() 함수를 이용하여 작업폴더를 변경할 수 있음
rvest패키지 필요하다.이 패키지를 다운로드 및 설치하기 위해서는 install.packages() 함수를 사용한다. install.packages("rvest")
현재 작업 중인 RStudio 세션에서 해당 패키지를 사용하기 위해서는 library() 함수를 이용하여 패키지를 불러온다.
library(rvest)
## Loading required package: xml2
Searching(서치) 리뷰 페이지를 살펴보자. https://www.rottentomatoes.com/m/searching_2018/reviews/?page=1&type=user&sort=해당 페이지를 살펴보면 Reviews의 구성이 All Critics, Top Critics, My Critics, 그리고 Audience로 이루어져 있음을 알 수 있다. 우리는 관람객의 평을 분석할 것이기 때문에, Audience 섹션을 클릭한다.
페이지 주소를 살펴보면, page 넘버는 1, type은 user로 설정되어 있음을 알 수 있다. 리뷰 사이트의 첫번째 페이지 그리고 사용자(관람객)의 리뷰에 해당하는 페이지가 선택되어 있음을 알 수 있다. 이 URL 주소를 복사하여 코드에 입력한다.
하지만, 리뷰 페이지가 1에서 20까지 여러 페이지로 구성되어 있기 때문에 반복문을 구성해서 첫번째 페이지부터 20번째 페이지까지의 리뷰 텍스트를 크롤링하도록 코딩해야 한다. 이를 위해서 URL 주소를 페이지 넘버를 기준으로 전(before)과 후(after)로 나누었다.
url_before <- "https://www.rottentomatoes.com/m/searching_2018/reviews/?page="
url_after <- "&type=user&sort="
all.reviews <- c()
for(page in 1:20){
url <- paste(url_before, page, url_after, sep="") # paste() 함수를 이용해서 url 변수에 URL 주소를 저장한다.
htxt <- read_html(url) # read_html() 함수를 이용하여 저장한 URL 주소의 html 페이지를 htxt 변수에 저장한다.
table <- html_nodes(htxt, ".review_table")
content <- html_nodes(table, ".user_review")
reviews <- html_text(content)
if(length(reviews) == 0){break}
all.reviews <- c(all.reviews, reviews)
print(page)
}
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
## [1] 6
## [1] 7
## [1] 8
## [1] 9
## [1] 10
## [1] 11
## [1] 12
## [1] 13
## [1] 14
## [1] 15
## [1] 16
## [1] 17
## [1] 18
## [1] 19
## [1] 20
review_table이고, 그 중 각 사용자의 리뷰 텍스트에 대한 부분의 class는 user_review인 것을 확인할 수 있다.all.reviews <- c()
for(page in 1:20){
url <- paste(url_before, page, url_after, sep="") # paste() 함수를 이용해서 url 변수에 URL 주소를 저장한다.
htxt <- read_html(url) # read_html() 함수를 이용하여 저장한 URL 주소의 html 페이지를 htxt 변수에 저장한다.
table <- html_nodes(htxt, ".review_table") # html_nodes() 함수를 사용하여 html 문서를 저장한 htxt 변수의 내용 중에서 review_table에 해당하는 부분을 table 변수에 저장한다.
content <- html_nodes(table, ".user_review") # html_nodes() 함수를 사용하여 table 변수의 전체 리뷰 내용 중 각 사용자의 리뷰 부분의 class인 user_review에 해당하는 부분을 content 변수에 저장한다.
reviews <- html_text(content) # html_text() 함수를 사용하여 content 변수에 저장한 html 문서의 text 부분을 reviews 변수에 저장한다.
if(length(reviews) == 0){break} # reviews 내용이 아무것도 없을 경우, 반복 중지
all.reviews <- c(all.reviews, reviews) # 각 페이지에 대한 사용자 리뷰 텍스트를 all.reviews 변수에 저장한다.
print(page) # 페이지 진행 출력
}
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
## [1] 6
## [1] 7
## [1] 8
## [1] 9
## [1] 10
## [1] 11
## [1] 12
## [1] 13
## [1] 14
## [1] 15
## [1] 16
## [1] 17
## [1] 18
## [1] 19
## [1] 20
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
search_reviews <- data_frame(id = 1:length(all.reviews),
review = all.reviews)
save(search_reviews, file="search_reviews.RData")
getwd() 함수를 이용해서 찾고, 그 폴더에 저장되어 있는 파일을 블랙보드 과제에 업로드