サブカル糞野郎なので休日はカフェめぐりをする。

で、カフェ一覧をNaverまとめで見ると便利だなと思う一方、いちいち住所をgoogleマップで調べるはめになって非効率。

http://matome.naver.jp/odai/2135825388603945101

ということでrvestでスクレイピング & leafletでマッピングした。

library("rvest")
u <- "http://matome.naver.jp/odai/2135825388603945101"
h <- html(u)
adds <- h %>% html_nodes(".mdLocation01SpotAddress") %>% html_text
names <- h %>% html_nodes(".mdImgCite02Txt01") %>% html_text
names <- names[-24] #カフェフルークは2回出ているので消去
names <- gsub(" by.+", "", names)

住所を加工した後、googleジオコーディングを用いて緯度経度を取得する。

adds <- gsub("日本, |〒[0-9]{3}-[0-9]{4} | .+", "", adds)
library("httr")
qs <- paste0("http://maps.googleapis.com/maps/api/geocode/json?address=", adds)

getLocation <- function(x){
  tmp <- content(GET(x),"parsed")
  res <- data.frame(
    lat=tmp$results[[1]]$geometry$location$lat,
    lng=tmp$results[[1]]$geometry$location$lng
    )
  }
locs <- NULL
for(q in qs){
  locs <- rbind(locs, getLocation(q))
  Sys.sleep(1)
  }
locs$names <- names

leafletで可視化する。

library("leaflet")
leaflet(width=800, height=600) %>% 
  addCircles(data=locs,
             lat= ~lat, 
             lng= ~lng) %>%
  addPopups(data=locs,
             lat= ~lat, 
             lng= ~lng,
             popup=locs$names,
            options=popupOptions(minWidth=10)
             ) %>% 
  addTiles()