네이버 지도상의 출발 - 도착 거리 및 시간
library(httr)
library(rvest)
## Loading required package: xml2
library(RSelenium)
urls1 <- "https://map.naver.com/"
remDr <- remoteDriver(remoteServerAddr = "localhost", port = 4445L, browserName = "chrome")
remDr$open()
## [1] "Connecting to remote server"
## $mobileEmulationEnabled
## [1] FALSE
##
## $hasTouchScreen
## [1] TRUE
##
## $platform
## [1] "WIN8_1"
##
## $acceptSslCerts
## [1] FALSE
##
## $`goog:chromeOptions`
## $`goog:chromeOptions`$debuggerAddress
## [1] "localhost:63453"
##
##
## $acceptInsecureCerts
## [1] FALSE
##
## $webStorageEnabled
## [1] TRUE
##
## $browserName
## [1] "chrome"
##
## $takesScreenshot
## [1] TRUE
##
## $javascriptEnabled
## [1] TRUE
##
## $setWindowRect
## [1] TRUE
##
## $unexpectedAlertBehaviour
## [1] ""
##
## $applicationCacheEnabled
## [1] FALSE
##
## $rotatable
## [1] FALSE
##
## $networkConnectionEnabled
## [1] TRUE
##
## $chrome
## $chrome$chromedriverVersion
## [1] "2.41.578737 (49da6702b16031c40d63e5618de03a32ff6c197e)"
##
## $chrome$userDataDir
## [1] "C:\\Users\\dj\\AppData\\Local\\Temp\\scoped_dir6276_2912"
##
##
## $takesHeapSnapshot
## [1] TRUE
##
## $pageLoadStrategy
## [1] "normal"
##
## $unhandledPromptBehavior
## [1] ""
##
## $databaseEnabled
## [1] FALSE
##
## $handlesAlerts
## [1] TRUE
##
## $version
## [1] "68.0.3440.106"
##
## $browserConnectionEnabled
## [1] FALSE
##
## $nativeEvents
## [1] TRUE
##
## $webdriver.remote.sessionid
## [1] "e5b0e6f7-d6af-4bf9-8980-4eaaa92c1ac9"
##
## $locationContextEnabled
## [1] TRUE
##
## $cssSelectorsEnabled
## [1] TRUE
##
## $id
## [1] "e5b0e6f7-d6af-4bf9-8980-4eaaa92c1ac9"
remDr$navigate(urls1)
element <- remDr$findElement("css", "#nav > ul > li:nth-child(2) > a")
element$clickElement()
입력 자료 od를 만든다.
ori <- c("하계장미아파트", "종로3가역", "국립중앙박물관", "유신고등학교", "마산야구장")
des <- c("아주대학교", "경기연구원", "수원역", "정자역", "창원시청")
od <- data.frame(ori, des)
od
## ori des
## 1 하계장미아파트 아주대학교
## 2 종로3가역 경기연구원
## 3 국립중앙박물관 수원역
## 4 유신고등학교 정자역
## 5 마산야구장 창원시청
입력 자료의 출발점 - 도착점을 반복적으로 입력하고 출력값을 가져온다.
time_path <- c()
check <- c()
for (i in 1:5)
{
print(i)
origin <- remDr$findElement("css", "#panel > div.panel_content.nano.has-scrollbar > div.scroll_pane.content > div.panel_content_fixed > div.panel_findway_top > div.pf_enter > div:nth-child(1) > span > input")
origin$sendKeysToElement(list(od$ori[i], key = "enter"))
destination <- remDr$findElement("css", "#panel > div.panel_content.nano.has-scrollbar > div.scroll_pane.content > div.panel_content_fixed > div.panel_findway_top > div.pf_enter > div:nth-child(2) > span > input")
destination$sendKeysToElement(list(od$des[i], key = "enter"))
click <- remDr$findElement("css", "#panel > div.panel_content.nano.has-scrollbar > div.scroll_pane.content > div.panel_content_fixed > div.panel_findway_top > ul > li.pf_tab_car.on > a")
click$clickElement()
check <- append(check, Sys.time())
Sys.sleep(2)
src <- remDr$getPageSource()[[1]]
h <- read_html(src)
time <- html_nodes(h,'div.fpi_info')
time <- html_text(html_nodes(h, 'strong em'))
time <- time[1:3]
if(nchar(time[3]) >= 3) time <- time[1:3]
else time <- c("0", time[1:2])
time_path <- append(time_path, time)
element <- remDr$findElement("css", "#nav > ul > li:nth-child(2) > a")
element$clickElement()
}
## [1] 1
## [1] 2
## [1] 3
## [1] 4
## [1] 5
후처리
time.table <- matrix(time_path, ncol = 3, byrow = TRUE)
colnames(time.table) <- c("hour", "min", "km")
time.table <- as.data.frame(time.table)
total <- data.frame(ori, des, time.table, check)
입력 행렬
od
## ori des
## 1 하계장미아파트 아주대학교
## 2 종로3가역 경기연구원
## 3 국립중앙박물관 수원역
## 4 유신고등학교 정자역
## 5 마산야구장 창원시청
산출 행렬
total
## ori des hour min km check
## 1 하계장미아파트 아주대학교 1 1 49.33 2018-09-03 22:13:27
## 2 종로3가역 경기연구원 0 53 34.10 2018-09-03 22:13:35
## 3 국립중앙박물관 수원역 0 53 38.57 2018-09-03 22:13:42
## 4 유신고등학교 정자역 0 24 16.95 2018-09-03 22:13:48
## 5 마산야구장 창원시청 0 24 11.93 2018-09-03 22:13:54