Я ищу для загрузки информации с сервера в R. Сервер здесь использует формы и вызовы сервлетов для извлечения данных.
Я работал над аналогичными проблемами с другими их формами здесь , но в этом случае я не могу заставить работать код для отправки на сервер. Возможно, я неправильно идентифицирую вызов сервлета?
Я использовал предыдущий код, чтобы попытаться построить скребок для этого, но безуспешно:
library(httr)
library(tidyverse)
start_date<-ymd("2000-01-01")
end_date<-ymd("2000-01-31")
res <- POST("http://itc.aeso.ca/itc/public/historicalIntertieReport.do",
#body=list(`form[startDate]` = "2001-01-01",
# `form[endDate]` = "2001-01-31",
# `form[fileFormat]` = "csv"),
body=list(
startDate = format(start_date, "%Y-%m-%d"),
endDate = format(end_date, "%Y-%m-%d"),
fileFormat = "csv" ),
write_disk("doc2.txt",overwrite = T))
Это работает, насколько это возможно - я получаю HTML-файл в doc2.txt, но я не получаю файл CSV, только заполненную версию формы.
Я пытался установить куки:
cookie_set=c("JSESSIONID"="voByJDSDYHyVxLXcuZ0eIFlCUmfk-hlE72Ag6HKeUlP2qoox1_jt!1966326938")
, а затем повторно запустите код:
res <- POST("http://itc.aeso.ca/itc/public/historicalIntertieReport.do",
#body=list(`form[startDate]` = "2001-01-01",
# `form[endDate]` = "2001-01-31",
# `form[fileFormat]` = "csv"),
body=list(
startDate = format(start_date, "%Y-%m-%d"),
endDate = format(end_date, "%Y-%m-%d"),
fileFormat = "csv" ),set_cookies(cookie_set),
write_disk("doc2.txt",overwrite = T))
ДОПОЛНИТЕЛЬНОЕ ОБНОВЛЕНИЕ:
Кажется, необходимо включить скрытые поля availableExpiryDate и availableEffectiveDate. Заголовок также должен быть queryHistoricalIntertieReport.do, чтобы это немного изменило ситуацию.
Этот URL работает и загружает CSV, поэтому я могу оценить их напрямую без GET, и это может быть лучшим решением.
Мысли все еще приветствуются, конечно.