Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- library(data.table)
- library(stringi)
- library(lubridate)
- library(foreach)
- library(httr)
- library(xml2)
- library(rvest)
- library(pipeR)
- # windows才需要先把locale改成C,並用stringi::stri_conv轉成big5
- backupLocale <- Sys.getlocale("LC_COLLATE")
- Sys.setlocale("LC_ALL", 'C')
- timeVec <- seq(ymd("2003/01/01"), ymd("2003/01/11"), 1)
- reservoirUrl <-
- "http://fhy.wra.gov.tw/ReservoirPage_2011/StorageCapacity.aspx"
- tmp <- foreach(time = timeVec, .final = rbindlist) %do% {
- VIEWSTATE <- GET(reservoirUrl) %>>% content %>>%
- xml_find_all("//input[@name='__VIEWSTATE']") %>>% xml_attr("value")
- postBody <- c(list("所有水庫"),
- lapply(c(year, month, day), function(f) f(time)),
- list(VIEWSTATE)) %>>%
- `names<-`(c(paste0("ctl00$cphMain$",
- c("cboSearch", paste0("ucDate$cbo",
- c("Year", "Month","Day")))),
- "__VIEWSTATE"))
- outTbl <- POST(reservoirUrl, body = postBody) %>>% content %>>%
- xml_find_first("//table[@id='ctl00_cphMain_gvList']") %>>%
- html_table(fill = TRUE) %>>% setDT %>>%
- `[`(j = lapply(.SD, stri_conv, from = "UTF-8", to = "Big5"))
- setnames(outTbl, stri_conv(names(outTbl), "UTF-8", "Big5"))
- fwrite(outTbl, sprintf("result/%s.csv", as.character(time)))
- return(NULL)
- }
- Sys.setlocale(locale = backupLocale)
- fwrite(rbindlist(lapply(list.files("result", "\\.csv$"), fread)), "merge.csv")
Advertisement
Add Comment
Please, Sign In to add comment