인공지능/R

R - RSelenium, xlsx 사용

해피밀세트 2020. 4. 28. 16:26
반응형

 

 

 

준비단계

 

1. RSelenium 설치 및 임포트

install.packages("RSelenium")

library(RSelenium)

 

 

!!주의사항!!

jar java 환경설정이 되어 있어야한다.

java 설치 확인

<CMD>

java -version

 

 

 

2. 가상 서버 가동하기

<CMD> - 관리자 권한으로 실행

  • cd 저장해둔 위치
  • Java -Dwebdriver.gecko.driver="geckodriver.exe" -jar selenium-server-standalone-4.0.0-alpha-1.jar -port 4445
  • 끝날때까지 띄워두기

 


 

RSelenium 사용

 

다나와 사이트에서 노트북(애플) 제품명, 가격, 정보 뽑아내기

# 가상서버에서 크롬으로 연결

remdr <- remoteDriver(remoteServerAddr='localhost', port=4445L, browserName='chrome')

 

# 창 열기

remdr$open()

# url 접속 (다나와-노트북)

remdr$navigate("http://prod.danawa.com/list/?cate=112758")

# 원하는 버튼 xpath 찾아서 클릭

remdr$findElement(using = 'xpath', value = '//*[@id="dlMaker_simple"]/dd/div[2]/button[1]')$clickElement()

remdr$findElement(using = 'xpath', value = '//*[@id="searchMaker1452"]')$clickElement()

제품명 뽑아내기

# 현재 페이지 소스 읽어들이기

source <- remdr$getPageSource()[[1]]

html <- read_html(source)

prod_name <- html_nodes(html,'.main_prodlist > ul > li > div > .prod_info > .prod_name > a') %>%

  html_text()

prod_name

# 제품가격 뽑아내기

source <- remdr$getPageSource()[[1]]

html <- read_html(source)

prod_price <- html_nodes(html,'.main_prodlist > ul > li > div > .prod_pricelist > ul > li > .price_sect > a') %>%

  html_text()

prod_price

# 제품정보 뽑아내기

source <- remdr$getPageSource()[[1]]

html <- read_html(source)

prod_info <- html_nodes(html,'.main_prodlist > ul > li > div > .prod_info > .prod_spec_set > dd > .spec_list') %>%

  html_text()

prod_info

# 제품정보 xpath 뽑아내기

prod_info <- html_nodes(html, xpath = '//*[@id]/div/div[2]/dl/dd/div')

prod_info[1]%>%

  html_text()

prod_info[30]%>%

  html_text()

 

info <- c()

for(i in 1:length(prod_info)){

  info <- c(info,prod_info[i]%>%html_text())

}

# 데이터 프레임으로 만들기

prod <- data.frame(prod_name=prod_name,

           prod_price=prod_price,

           prod_info=info,

           stringsAsFactors = F)

View(prod)

# 2페이지로 넘어가기

remdr$findElement(using = 'css selector', value = '#productListArea > div.prod_num_nav > div > div > a:nth-child(2)')$clickElement()

 

# 닫기 / 종료

remdr$close()

 

 


 

xlsx 사용

 

# xlsx 라이브러리 설치 및 임포트

install.packages('xlsx')

Sys.setenv(JAVA_HOME="C:\\Program Files\\Java\\jdk1.8.0_102")

library(xlsx)

 

 

# 엑셀파일 만들기

write.xlsx(prod,file="C:/data/prod.xlsx", sheetName = "sheet1",

           col.names = T, row.names = F, append = F)

 

 

# 엑셀파일 읽어 들이기

df <- read.xlsx(file="C:/data/prod.xlsx", sheetName = 'sheet1',

          encoding = "UTF-8")

str(df)

반응형

'인공지능 > R' 카테고리의 다른 글

R - tm 라이브러리를 사용한 텍스트 마이닝  (0) 2020.05.06
R - 크롤링 연습 ③  (0) 2020.05.04
R - 크롤링 연습 ②  (0) 2020.04.27
R - 크롤링 연습 ①  (0) 2020.04.27
R - 크롤링  (0) 2020.04.27