Как я могу отправить POST простую форму HTML в R?

Я относительно новичок в программировании R, и я пытаюсь поместить часть материала, который я изучаю в Johns Hopkins Data Science, для практического использования. В частности, я хотел бы автоматизировать процесс загрузки исторических цен облигаций с веб-сайта US Treasury

Используя Firefox и R, я смог определить, что веб-сайт US Treasury использует очень простую форму HTML POST, чтобы указать одну дату для интересующих котировок. Затем он возвращает таблицу вторичной рыночной информации по всем непогашенным облигациям.

Я безуспешно пытался использовать два разных пакета R для отправки запроса на веб-сервер Казначейства США. Заяц – это два подхода, которые я пробовал:

Попытка № 1 (с использованием RCurl):

url <- "https://www.treasurydirect.gov/GA-FI/FedInvest/selectSecurityPriceDate.htm" td.html <- postForm(url, submit = "Show Prices", priceDate.year = 2014, priceDate.month = 12, priceDate.day = 15, .opts = curlOptions(ssl.verifypeer = FALSE)) 

Это приводит к возврату веб-страницы и ее сохранению в td.html но все, что она содержит, является сообщением об ошибке с сервера td.html . Я знаю, что сервер работает, потому что, когда я отправляю тот же запрос через мой браузер, я получаю ожидаемые результаты.

Попытка № 2 (с использованием rvest):

 s <- html_session(url) f0 <- html_form(s) f1 <- set_values(f0[[2]], priceDate.year=2014, priceDate.month=12, priceDate.day=15) test <- submit_form(s, f1) 

К сожалению, этот подход даже не оставляет R и приводит к следующему сообщению об ошибке от R:

 Submitting with 'submit' Error in function (type, msg, asError = TRUE) :  malformed 

Я не могу понять, как узнать, какой «искаженный» текст отправляется на rvest, чтобы я мог попытаться диагностировать проблему.

Будем очень благодарны за любые предложения или советы по решению этой кажущейся простой задачи!

    Ну, похоже, он работает с библиотекой httr .

     library(httr) url < - "https://www.treasurydirect.gov/GA-FI/FedInvest/selectSecurityPriceDate.htm" fd <- list( submit = "Show Prices", priceDate.year = 2014, priceDate.month = 12, priceDate.day = 15 ) resp<-POST(url, body=fd, encode="form") content(resp) 

    Библиотека rvest - это всего лишь shell httr . Похоже, что он не очень хорошо интерпретирует абсолютные URL-адреса без имени сервера. Поэтому, если вы посмотрите на

     f1$url # [1] /GA-FI/FedInvest/selectSecurityPriceDate.htm 

    вы видите, что он имеет только путь, а не имя сервера. Кажется, это путает httr . Если вы это сделаете

     f1 < - set_values(f0[[2]], priceDate.year=2014, priceDate.month=12, priceDate.day=15) f1$url <- url test <- submit_form(s, f1) 

    это похоже на работу. Возможно, это большой вопрос, о котором следует rvest . (Проверено на rvest_0.1.0 )

    Я знаю, что это старый вопрос, но

     style='POST' 

    Параметр postForm делает трюк.