私は R プログラミングに比較的慣れていないので、ジョンズ・ホプキンス大学のデータ サイエンス トラックで学んだことのいくつかを実用化しようとしています。具体的には、米国財務省の Web サイトから過去の債券価格をダウンロードするプロセスを自動化したいと考えています。
Firefox と R の両方を使用して、米国財務省の Web サイトが非常に単純な HTML POST フォームを使用して、関心のある相場の単一の日付を指定していることを確認できました。次に、すべての未払い債券のセカンダリ マーケット情報のテーブルを返します。
2 つの異なる R パッケージを使用して、米国財務省の Web サーバーに要求を送信しようとしましたが、失敗しました。私が試した2つのアプローチは次のとおりです。
試行 #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))
これにより、Web ページが返されて保存されtd.html
ますが、含まれているのは Treasurydirect サーバーからのエラー メッセージだけです。ブラウザを介して同じリクエストを送信すると、期待どおりの結果が得られるため、サーバーが機能していることはわかっています。
試行 #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) : <url> malformed
問題の診断を試みることができるように、どの「不正な」テキストが rvest に送信されているかを確認する方法がわかりません。
この単純なタスクを解決するための提案やヒントをいただければ幸いです。