如何在R中发布简单的HTML表单?

如何在R中发布简单的HTML表单?,第1张

概述我对R编程比较陌生,我试图将我在Johns Hopkins数据科学专业学习的一些东西用于实际应用.具体来说,我想自动化从 US Treasury website下载历史债券价格的过程 使用Firefox和R,我能够确定美国财政部网站使用非常简单的HTML POST表单来指定感兴趣的报价的单个日期.然后返回所有未偿债券的二级市场信息表. 我没有尝试使用两个不同的R包来向美国财政部Web服务器提交请求 我对R编程比较陌生,我试图将我在Johns Hopkins数据科学专业学习的一些东西用于实际应用.具体来说,我想自动化从 US Treasury website下载历史债券价格的过程

使用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的“格式错误”的文本,以便我可以尝试诊断问题.

任何建议或提示解决这个看似简单的任务将不胜感激!

解决方法 好吧,它似乎与httr库一起使用.
library(httr)url <- "https://www.treasurydirect.gov/GA-FI/FedInvest/selectSecurityPriceDate.htm"fd <- List(    submit = "Show Prices",priceDate.day   = 15)resp<-POST(url,body=fd,encode="form")content(resp)

rvest库实际上只是httr的包装器.看起来它没有很好地解释没有服务器名称的绝对URL.所以,如果你看看

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

你看到它只有路径而不是服务器名称.这似乎让httr感到困惑.如果你这样做

f1 <- set_values(f0[[2]],priceDate.day=15)f1$url <- urltest <- submit_form(s,f1)

这似乎有效.也许它应该报告给rvest一个大的. (在rvest_0.1.0上测试过)

总结

以上是内存溢出为你收集整理的如何在R中发布简单的HTML表单?全部内容,希望文章能够帮你解决如何在R中发布简单的HTML表单?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1139041.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存