프로그래밍/R

R 기본으로 크롤러 만들기

bonong 2019. 1. 24. 15:10
반응형

 

 

R에 대해 아무것도 모르지만

다른 프로그래밍 언어에 대한 기초지식만 있어도

가능합니다

저도 구글링으로만 정보를 찾았습니다

 

 

설정

 

처음은 패키지 다운로드 입니다

 

1
install.packages("XML","stringr")
cs

 

이렇게 하면 패키지 다운로드가 됩니다

R에서 패키지라고 하는 것은 다른 유저들이 만들어 놓은 것을 다운받아 쓰는 것인데

저는 부품이라고 할게요 부품이라고 하면 더 이해가 잘되는 느낌이라서 ㅎㅎ

 

 

1
2
library(XML)
library(stringr)
cs

 

library는 앞에서 다운로드한 부품을 지금 사용하기 위해 가져오는 것입니다

예를 들어 게임에서 아이템을 장착한다는 느낌이죠

 

 

이제 필요한 설정은 다했습니다

url을 설정하는 코드입니다

 

1
2
all_reviews <- NULL
url_base <- "https://movie.naver.com/movie/bi/mi/pointWriteFormList.nhn?code=167651&type=after&onlyActualPointYn=N&order=newest&page="
cs

위 url 네이버 서비스 종료로 크롤링 불가 합니다

 

all_reviews는 리뷰들을 저장할 곳으로 아무값도 안들어가 있는 NULL값을 설정합니다

여기서 다른 프로그래밍 언어는 = 대입연산자를 사용하는데 R은 <- 를 사용합니다

물론 = 연산자도 사용가능합니다 하지만 R에서는 <- 사용을 선호한다는 거 같아요

 

url_base에 들어가는 url은 네이버 영화평점 url입니다

이번에 크롤링하는 영화는 글을 작성하는 시간 기준으로 제일 예매율이 높은 영화인 '극한직업' 입니다

다른 영화를 하고 싶을경우 중간에 167651 숫자코드를 네이버에서 찾아서 원하는 영화 코드로 바꾸면 가능

 

 

실행

 

페이지를 읽는 코드입니다

 

1
2
3
4
5
6
7
8
9
10
11
for (i in 1:240) { 
  newr <- NULL
  url <- paste(url_base, i, sep='')
  txt <- readLines(url, encoding="UTF-8")
  
  reviews <- txt[which(str_detect(txt, "class=\"score_reple\""))+1]
  reviews <- gsub("<.+?>|\t","", reviews)
  
  newr <- cbind(reviews)
  all_reviews <- rbind(all_reviews, newr)
}
cs

 

2번째 줄 newr은 한페이지 10개 리뷰를 저장하는 변수입니다

 

for 구문에서 1:240은 1부터 240까지 반복한다는 뜻인데

3번째 줄에 url 변수 안에 위에서 말했던 네이버 평점 url_base에 들어가 있는 주소 끝에

숫자를 1부터 240까지 반복할 것입니다

240페이지 X 한페이지에 리뷰 수는 10개 =  리뷰 2400개

크롤링이 정상작동이 되면 총 2400개의 리뷰를 가져올 수 있습니다

 

4번째 줄은 txt 변수에 url변수에 들어간 주소를 html 파일로 저장하는 부분

 

다음 6번째 줄은 html파일의 리뷰부분인 class="score_reple" 부분을 txt에 저장하는 내용

 

네이버에서 태그추가로 score_reple +1을 하면 바로 댓글내용이 안나와 오류가 나는거였습니다 아래로 

들어가면 수정한 내용을 볼 수 있습니다

 

https://repl.it/@bolonge/r#main.r

 

7번째줄은 특수문자를 제거하는 부분입니다

 

네이버영화 말고 다른 것을 크롤링하고 싶다면 원하는 태그만 알면 되는데

 

 

원하는 태그를 보는 방법은 크롬에서는 F12를 누르면 위에 화면처럼 나타나는데 오른쪽에 화살표있는 부분을 클릭하고 원하는 부분에 마우스를 클릭하면 옆에 원하는 태그를 볼 수 있습니다

 

9번째 줄은 한페이지 10개리뷰를 newr에 저장하는 부분이고

10번째 줄은 all_reviews에 계속 10개 리뷰인 newr을 추가한다는 내용입니다

계속 추가를 하니까 10+10+10+....+10 를 240번 해서 2400개가 되는 것입니다

 

저장

마지막으로 저장하는 코드입니다

 

1
write.table(all_reviews, "C:\\Temp\\movie_review_Ext_J.txt")
cs

 

Temp안에 movie_review_Ext_J.txt파일로 저장하겠다는 뜻입니다

실행하고 폴더에 가서 파일을 열어 확인해보겠습니다

 

 

제일 위에리뷰와 크롤링한 데이터가 일치하는 것을 확인합니다

 

 

 

스크롤을 맨 아래로 넘겨 총 2400개의 리뷰가 크롤링된 것을 확인할 수 있습니다

 

다음에는 크롤링한 데이터를 KoNLP 부품을 통한 분석과 워드클라우드를 만들어 보겠습니다

 

 

 

 

반응형