免责声明:虽然我已经设法使用 httr 的 POST 函数从另一个来源获取数据,但要知道我在 httr 和 HTML 表单方面是一个完整的 n00b。
我想使用 httr 将一些数据从网站直接带入 R。我的第一次尝试涉及将命名列表传递给正文 arg(如本小插图所示)。但是,我注意到表单输入名称中的方括号(至少我认为它们是表单输入参数)。因此,我尝试将正文作为字符串传递,因为我认为它应该出现在请求正文中:
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 上的开发人员工具/网络中,它在 Content-Disposition 下的响应标题中指出,当我手动单击表单上的“下载数据”按钮时,有一个包含数据的文本文件附件。它似乎不在与上述代码中的响应对象关联的任何标头中。为什么 POST 请求没有返回此文件 - 包含数据的文件在哪里?
感觉就像我错过了一些明显的东西。有人愿意帮我把这些点联系起来吗?