소품집

Selenium을 크롬에서 구동하기 - 네이버카페 크롤링 본문

Web crawling

Selenium을 크롬에서 구동하기 - 네이버카페 크롤링

sodayeong 2020. 5. 11. 13:16

Selenium 이용하기


셀레니움은 브라우저(ex 크롬)를 자동으로 구동할 수 있는 기능

# 셀레니움 이용하기

library(RSelenium)
library(wdman)
library(dplyr)
library(httr)
library(rvest)

# 리모트 드라이브 설정 
remote <- rsDriver(browser = c('chrome'), chromever = '81.0.4044.69')
remote$client$open()

 

 

웹 브라우저 제어

네이버 메인 페이지로 이동하기

# 웹 브라우저 제어
# 네이버 메인 페이지로 이동하기

remDr <- remote[['client']]
remDr$navigate('http://www.naver.com')


# 로그인 링크 찾기

login <- remDr$findElement(using = 'css', value='a.link_login')

# 로그인 버튼 클릭
login$clickElement()

 

계정정보 입력하기

# 아이디 입력창의 위치를 지정
id <- remDr$findElement(using='css',value='input#id.int')

# 아이디를 입력
id$sendKeysToElement(sendKeys = list('본인의 id'))

# 비밀번호 입력창의 위치 조정
pw <- remDr$findElement(using='css',value='#pw.int')

# 비밀번호를 입력 
pw$sendKeysToElement(sendKeys = list('본인의 pw'))

# 로그인 화면에 있는 로그인 버튼의 위치를 찾습니다.
login <- remDr$findElement(using='css',value='#frmNIDLogin > fieldset > input')
login$clickElement()

 

크롤링 대상 카페로 이동

로그인 상태에서 열리는 카페 글로 이동합니다

remDr$navigate(url='https://m.cafe.naver.com/sch40602f8040011910')

# 페이지에 있는 내용물을 가져오기
remDr$getPageSource()

# 리스트키의 내용물 가져오기 (첫 번째 키)
res <- remDr$getPageSource() %>% `[[`(1)

url <- res %>%
  read_html() %>%
  html_nodes(css='li.board_box a') %>%
  html_attr('href')
url[url!='#']

 

특정 페이지의 컨텐츠를 추출해보자

# 특정페이지의 컨텐츠를 추출해보자 
# -> 첫 번째 게시물을 가져오기 위해 많은 url 중에서 첫번째 url을 가져와봤다
remDr$navigate(url[[1]])

# 현재 열린 웹 페이지의 html을 가져오기
res <- remDr$getPageSource() %>% `[[`(1)

# 카페글 본문을 추출
body <- res %>%
  read_html() %>%
  html_nodes(css = 'div#postContent') %>%
  html_text(trim=TRUE)
728x90
Comments