반응형

이번 내용은 1화, 2화와 관계없이 진행할 수 있습니다.

(코드별 자세한 의미가 궁금하시면 1화, 2화를 참고해주세요)

네이버 영화 '쇼생크탈출'에 대해서 리뷰와 평점을 크롤링 해올게요.

네이버 영화 페이지 : http://movie.naver.com/movie/bi/mi/point.nhn?code=17421#tab 

 

[영화 리뷰의 일부]

 

 

 


[결과값]

 

영화 쇼생크탈출에 대한 평점과 리뷰를 아래와 같은 형식으로 가져왔습니다

 

 

 


 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
library(XML)
library(stringr)
 
all_reviews <- NULL
url_base <- "http://movie.naver.com/movie/bi/mi/pointWriteFormList.nhn?code=17421&type=after&onlyActualPointYn=N&order=newest&page="
 
for (i in 1:2) {
    temp <- NULL
    url <- paste(url_base, i, sep='')
    txt <- readLines(url, encoding="UTF-8")
 
    points <- txt[which(str_detect(txt, "class=\"star_score\""))+2]
    points <- gsub("<.+?>|\t","", points)
    points <- points[c(2:11)]  #한 리뷰 페이지당 데이터가 11건이 나옴 (첫번째의 불필요한행 존재. 때문에 2번째 행부터 11번째 행의 값만 가져옴)
 
    reviews <- txt[which(str_detect(txt, "class=\"score_reple\""))+1]
    reviews <- gsub("<.+?>|\t","", reviews)
 
    temp <- cbind(points, reviews)
    all_reviews <- rbind(all_reviews, temp)
}
 
write.table(all_reviews, "C:\\Temp\\movie_review.txt")
cs

 

line 5 : url_base 변수 중간에 17421 라고 빨갛게 된 부분 = 영화 쇼생크탈출의 고유코드 (다른 영화를 하고 싶으시면 다른 고유코드를 넣으시면 됩니다)

line 7 : 저는 편의상 첫번째 리뷰페이지 10건, 두번째 리뷰페이지 10건을 가져왔는데요..

2를 100으로 늘리면 100*10 건의 리뷰가 쌓일거에요.

 

line 14 : points 를 가져와서 보니까 첫 번째 행에 불필요한 데이터가 존재하더라구요.

2 번째 데이터부터 11 번째 데이터를 가져오라고 정의해주었습니다.

 

line 19 : 각 페이지의 10건 리뷰를 temp 변수에 담습니다.

line 20 : 각 페이지의 10건의 리뷰(temp)를 누적하여 쌓아줍니다.  temp를 계속 이어붙여 주는거죠!

 

그럼 수고하세요!

 

반응형