我对 R 编程比较陌生,我正在尝试将我在约翰霍普金斯大学数据科学轨道中学习的一些东西投入实际使用。具体来说,我想自动化从美国财政部网站下载历史债券价格的过程
使用 Firefox 和 R,我能够确定美国财政部网站使用一个非常简单的 HTML POST 表单来指定感兴趣报价的单个日期。然后它返回所有未偿债券的二级市场信息表。
我尝试使用两个不同的 R 包向美国财政部 Web 服务器提交请求,但未成功。野兔是我尝试过的两种方法:
尝试 #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但它所包含的只是来自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 的“格式错误”文本,以便我可以尝试诊断问题。
任何解决这个看似简单的任务的建议或技巧将不胜感激!