Wie kann ich ein einfaches HTML-Formular in R POSTEN?

Ich bin relativ neu in der R-Programmierung und versuche, einige der Dinge, die ich in der Johns Hopkins Data Science-Spur lerne, für die Praxis einzusetzen. Insbesondere möchte ich den Prozess des Herunterladens von historischen Anleihekursen aus dem @ automatisiereUS Treasury Website

Mit Firefox und R konnte ich feststellen, dass die Website des US-Finanzministeriums ein sehr einfaches HTML-POST-Formular verwendet, um ein einzelnes Datum für die relevanten Zitate anzugeben. Anschließend wird eine Tabelle mit Sekundärmarktinformationen für alle ausstehenden Anleihen zurückgegeben.

Ich habe erfolglos versucht, zwei verschiedene R-Pakete zu verwenden, um eine Anfrage an den US-Treasury-Webserver zu senden. Hase sind die beiden Ansätze, die ich versucht habe:

Versuch # 1 (mit 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))

Dies führt dazu, dass eine Webseite zurückgegeben und in @ gespeichert wirtd.html aber alles was es enthält ist eine Fehlermeldung vom treasurydirect Server. Ich weiß, dass der Server funktioniert, denn wenn ich dieselbe Anfrage über meinen Browser abschicke, erhalte ich die erwarteten Ergebnisse.

Versuch # 2 (mit 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)

Leider verlässt dieser Ansatz nicht einmal R und führt zu der folgenden Fehlermeldung von R:

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

Ich kann anscheinend nicht herausfinden, wie ich feststellen kann, welcher "fehlerhafte" Text an Rvest gesendet wird, damit ich versuchen kann, das Problem zu diagnostizieren.

Irgendwelche Vorschläge oder Tipps zur Lösung dieser scheinbar einfachen Aufgabe wären sehr dankbar!

Antworten auf die Frage(4)

Ihre Antwort auf die Frage