Почему POST in R загружает саму форму HTML, а не запрошенную CSV? - PullRequest
0 голосов
/ 21 января 2019

Я ищу для загрузки информации с сервера в 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, и это может быть лучшим решением.

Мысли все еще приветствуются, конечно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...