윈도우에서만 가능할 것으로 여겨졌던 크롤링이 우분투를 이용해서 가능하다.
https://lareale.tistory.com/292
위를 참조하여 도커에 크롬이 설치된 컨테이너 서버를 설치하고, 실행시킨다.
13 wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add - $ sudo sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list'
14 wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
15 sudo sh -c 'echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list'
16 ls
17 sudo apt-get update
18 sudo apt-get install google-chrome-stable
19 wget -N http://chromedriver.storage.googleapis.com/2.10/chromedriver_linux64.zip -P ~/Downloads
21 sudo apt-get install unzip
22 unzip ~/Downloads/chromedriver_linux64.zip
59 sudo ln -s /usr/local/share/chromedriver /usr/local/bin/chromedriver
60 sudo ln -s /usr/local/share/chromedriver /usr/bin/chromedriver
68 sudo apt-get install libcurl
69 sudo apt-get install libcurl4-openssl-dev
70 sudo apt-get install libssl-dev
71 sudo apt-get install libxml2-dev
72 sudo apt-get install xml2
73 sudo R
74 sudo echo "deb http://cran.rstudio.com/bin/linux/ubuntu xenial/" | sudo tee -a /etc/apt/sources.list
75 gpg --keyserver keyserver.ubuntu.com --recv-key E084DAB9
76 gpg -a --export E084DAB9 | sudo apt-key add -
77 sudo apt-get update
78 sudo apt-get install r-base r-base-dev
79 R --version
$ sudo docker run -p 4445:4444 selenium/standalone-chrome &
아래 소스는 아직 테스트하지 못했고, aws t2.micro 에서 안된다.
(용량 문제로 dplyr 패키지를 설치할 수 없다.)
테스트 한 것은 cvs로 만드는 소스가 테스트 되었고, 최신순 선택은 실패했다.
MS 윈도우 서버가 정지되는 바람에 시도하게 되었는데, 결국 성공하지 못하여 아래 소스를 위해 되살렸다.(정지된 구독을 종량제로 전환하기 위해 영어로 통화를 26분이나 하였다. T.T)
library(rvest)
library(RSelenium)
library(httr)
library(stringr)
library(googlesheets)
library(tidyverse)
ch=wdman::chrome(port=4445L) #크롬드라이버를 포트
remDr <- remoteDriver(remoteServerAddr = "localhost", port = 4445L, browserName = "chrome")
remDr$open() #크롬 Open
remDr$navigate("https://play.google.com/store/apps/details?id=패키지명&showAllReviews=true&hl=ko") #설정 URL로 이동(한국 스토어 기준으로 하려면 반드시 &hl=ko를 해야한다. 그렇지 않으면 &hl=en 으로 기본 설정되어 서버 IP에 해당하는 국가 리뷰가 나온다)
webElemButton <- remDr$findElements(using = "xpath", "/html/body/div[1]/div[4]/c-wiz/div/div[2]/div/div[1]/div/div/div[1]/div[2]/c-wiz/div[1]/div/div[1]/div[2]/span")
remDr$mouseMoveToLocation(webElement = webElemButton[[1]]) #정렬 방법 리스트 확장
remDr$click()
Sys.sleep(10)
webElemButton <- remDr$findElements(using = "xpath", "/html/body/div[1]/div[4]/c-wiz/div/div[2]/div/div[1]/div/div/div[1]/div[2]/c-wiz/div[1]/div/div[2]/div[1]")
remDr$mouseMoveToLocation(webElement = webElemButton[[1]]) #최신순 선택
remDr$click()
Sys.sleep(10)
frontPage <- remDr$getPageSource() #페이지 전체 소스 가져오기
reviewNames <- read_html(frontPage[[1]]) %>% html_nodes('.bAhLNe.kx8XBd') %>% html_nodes('.X43Kjb') %>% html_text() #페이지 전체 소스에서 리뷰 정보(이름, 날짜) 부분 추출하기
reviewDates <- read_html(frontPage[[1]]) %>% html_nodes('.bAhLNe.kx8XBd') %>% html_nodes('.p2TkOb') %>% html_text() #페이지 전체 소스에서 리뷰 정보(이름, 날짜) 부분 추출하기
reviewComments <- read_html(frontPage[[1]]) %>% html_nodes('.UD7Dzf') %>% html_text() #페이지 전체 소스에서 리뷰 정보(이름, 날짜) 부분 추출하기
reviewData <- data.frame(name=reviewNames, date=reviewDates, comment=reviewComments)
df_new <- gs_new(title = "패키지명",
input = reviewData,
trim = TRUE)
remDr$close()
댓글 달기