サブカル糞野郎なので休日はカフェめぐりをする。
で、カフェ一覧を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()