R과 Selenium을 이용하여, 웹 상의 텍스트를 긁어모으(크롤링 또는 스크래핑)는 방법에 대해서 포스팅 하고자 한다.
웹상의 텍스트를 긁어오기 위해서는 기본적으로 해당 페이지의 URL주소로 접속해 페이지의 HTML소스를 파싱한 후 해당 태그 부분에 텍스트를 가져오는 방식이다.
이번 포스팅에서 Selenium을 사용하는 이유는 Javascript로 작성된 페이지에서 텍스트를 가져오기 위해서이다.
Javascript로 작성된 page는 이벤트를 호출시키는 동작이 추가적으로 필요하고, Selenium으로 그 동작을 수행할 수 있다.
그럼 크롤링(스크래핑)에 필요한 패키지들을 알아보자.
library(RSelenium) #webdriver라는 것을 통해 디바이스에 설치된 브라우저를 제어할 수 있따.
#Chrome을 사용할 것이므로 Chrome이 설치되있어야함.
#Sys.setenv(JAVA_HOME=’C:/Program Files/Java/jre1.8.0_111')
library(rvest) #HTML처리
library(httr) #HTML처리
library(stringr) #문자열 함수
위 패키지들을 설치해야한다. 호출할때는 library(), 설치할때는 install.packages(“”)로 실행하면 된다.
이제 본격적으로 Selenium을 이용해 크롬 드라이버를 실행시켜보자.
ch=wdman::chrome(port=4567L) #chrome드라이버를 포트 4567번에 배정하고, 실행준비
대표사진 삭제
#이런식으로 나오면 정상적으로 준비가 완료됨
remDr=remoteDriver(port=4567L, browserName=’chrome’) #remote설정
remDr$open() #크롬드라이버 실행
대표사진 삭제
#크롬드라이버 실행 화면
사진과 같이 크롬드라이버가 실행되면 정상적으로 작동이 완료된 것입니다.
스크랩하고 싶은 사이트로 이동하기 위해서는, 주소창에 URL주소를 직접 입력하는 방법과 아래 처럼 명령어를 작성하는 방법 두가지가 있다.
remDr$navigate(“http://www.naver.com") #URL로 이동
대표사진 삭제
#스크랩 하고 싶은 사이트로 이동
원래 Selenium은 웹테스트를 자동화하기 위한 목적의 라이브러리 이지만, 이를 효과적으로 사용하면 효과적인 크롤링 및 스크래핑을 수행할수 있다.
종료를 할때는 다음 명령어를 실행하자.
remDr$close
이번포스팅에서는 웹드라이버를 실행하는 것까지 해봤고, 다음 포스팅에서 이어서 HTML소스를 긁어서 원하는 부분의 텍스트를 저장하는 부분을 해보겠다.