httr:使用 POST() 检索数据



>免责声明:虽然我已经设法使用 httr 的 POST 函数从另一个来源获取数据,但要知道,关于 httr 和 HTML 表单,我是一个完整的 n00b。

我想使用 httr 从网站直接将一些数据带入 R。我的第一次尝试涉及将命名列表传递给正文参数(如此小插图所示(。但是,我注意到表单输入名称中有方括号(至少我认为它们是表单输入参数(。因此,我尝试将正文作为字符串传递,因为我认为它应该出现在请求正文中:

url <- 'http://research.stlouisfed.org/fred2/series/TOTALSA/downloaddata'
query <- paste('form[native_frequency]=Monthly', 'form[units]=lin',
                'form[frequency]=Monthly', 'form[obs_start_date]="1976-01-01"',
                'form[obs_end_date]="2014-11-01"', 'form[file_format]=txt'
                sep = '&')
response <- POST(url, body = query)

无论如何,上面的代码只返回网页源代码,我无法弄清楚如何正确提交表单,以便它返回与手动单击表单的"下载数据"按钮相同的数据。

Chrome上的开发人员工具/网络中,当我手动单击表单上的"下载数据"按钮时,它会在"内容处置"下的响应标头中指出,有一个包含数据的文本文件附件。它似乎不在上述代码中与响应对象关联的任何标头中。为什么这个文件没有被 POST 请求返回 - 包含数据的文件去哪里了?

感觉我错过了一些明显的东西。有人愿意帮助我连接点吗?

一般来说,如果你要使用httr,你让它为你构建和编码数据,你只需通过表单值列表传入信息。尝试

url<-"http://research.stlouisfed.org/fred2/series/TOTALSA/downloaddata"
query <- list('form[native_frequency]'="Monthly",
    'form[units]'="lin",
    'form[frequency]'="Monthly",
    'form[obs_start_date]'="1996-01-01",
    'form[obs_end_date]'="2014-11-01",
    'form[file_format]'="txt")
response <- POST(url, body = query)
content(response, "text")

回报看起来像

[1] "Title:               Total Vehicle SalesrnSeries ID:           TOTALSArnSource:   
US. Bureau of Economic AnalysisrnRelease:             Supplemental Estimates, Motor 
VehiclesrnSeasonal Adjustment: Seasonally Adjusted Annual RaternFrequency:           MonthlyrnUnits:               
Millions of UnitsrnDate Range:          1996-01-01 to 2014-11-
01rnLast Updated:        2014-12-05 7:16 AM CSTrnNotes:               rnrnDATE       
VALUErn1996-01-01  14.8rn1996-02-01  15.6rn1996-03-01  16.0rn1996-04-01  15.5rn1996-05-01 
16.0rn1996-06-01  15.3rn1996-07-01  15.1rn1996-08-01  15.5rn1996-09-01  15.5rn1996-10-01   15.3r

相关内容

  • 没有找到相关文章

最新更新