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_hms("2017/06/09 00:00:00"), ymd_hms("2017/06/11 00:00:00")-1, 600)
- reservoirUrl <- "http://fhy.wra.gov.tw/ReservoirPage_2011/Statistics.aspx" # 10 min data
- # for (time in timeVec) {
- time = timeVec[1]
- getRes <- GET(reservoirUrl) %>>% content
- POSTParas1 <- getRes %>>% {
- list("__VIEWSTATE" = xml_find_all(., "//input[@name='__VIEWSTATE']"),
- "__VIEWSTATEGENERATOR" = xml_find_all(., "//input[@name='__VIEWSTATEGENERATOR']"),
- "__EVENTVALIDATION" = xml_find_all(., "//input[@name='__EVENTVALIDATION']")) %>>%
- lapply(xml_attr, attr = "value")
- }
- ctl00_ctl02_HiddenField <- getRes %>>% xml_find_all("//script") %>>% xml_attr("src") %>>%
- `[`(grepl("AjaxControlToolkit", .)) %>>%
- (sub("/ReservoirPage_2011/Statistics.aspx\\?_TSM_HiddenField_=", "", .))
- POSTParas2 <- lapply(c(year, month, day, hour, minute), function(f) f(time)) %>>%
- `names<-`(paste0("ctl00$cphMain$ucDate$cbo",
- c("Year", "Month", "Day", "Hour", "Minute")))
- postBody <- c(list("ctl00$cphMain$cboSearch" = "全部", "__EVENTTARGET" = "ctl00$cphMain$btnQuery",
- ctl00_ctl02_HiddenField = ctl00_ctl02_HiddenField,
- "ctl00$ctl02" = "ctl00$cphMain$ctl00|ctl00$cphMain$btnQuery"), POSTParas1, POSTParas2)
- 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"))
- # }
- Sys.setlocale(locale = backupLocale)
Add Comment
Please, Sign In to add comment