네이버 지도상의 출발 - 도착 거리 및 시간

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