준비단계
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 |