【问题标题】:downloading csv file using postForm function in R使用 R 中的 postForm 函数下载 csv 文件
【发布时间】:2016-02-07 07:06:53
【问题描述】:

我正在尝试使用 postForm 从 Web 下载 csv 数据,但是,下载的文件似乎是 html 文档而不是 csv 文件。 这些是我的代码:

############################
library(RCurl)

url <- "https://research.stlouisfed.org/fred2/series/MKTGDPSAA646NWDB/downloaddata"
params <- list(
  "native_frequency" = "Annual", units = "lin",
  "frquency" = "Annual", "aggregation" = "Average", "obs_start_date" = "1968-01-01",
  "obs_end_date" = "2014-01-01", "file_format" = "csv", "download_data_2" = "", format="csv")

result <- postForm( url, .params = params)
writeBin(as.vector(result),"doc2.txt")

【问题讨论】:

  • 我看到了拼写错误和脚本名称与您的姓名不一致的情况。花更多时间查看页面上的代码。
  • 我使用了你推荐的代码,但结果还是一样
  • 我认为问题与编码有关
  • 我对此表示怀疑。我仍然看到一个明显的拼写错误,并且您提交的表单中的名称与代码中的名称不匹配。提交按钮的名称为:id="form_download_data_2"name="form[download_data_2]"
  • 这是有效的 php 代码

标签: r csv post rcurl downloading-website-files


【解决方案1】:

一种更现代的方法是使用httr 包:

library(httr)

res <- POST("https://research.stlouisfed.org/",
            path="fred2/series/MKTGDPSAA646NWDB/downloaddata",
            body=list(`form[native_frequency]` = "Annual", 
                      `form[units]` = "lin", 
                      `form[frequency]` = "Annual", 
                      `form[aggregation]` = "Average", 
                      `form[obs_start_date]` = "1968-01-01", 
                      `form[obs_end_date]` = "2014-01-01", 
                      `form[file_format]` = "csv", 
                      `form[download_data_2]` = ""),
            write_disk("doc2.txt"))

warn_for_status(res)

##         DATE       VALUE
## 1 1968-01-01  4187777711
## 2 1969-01-01  4485777644
## 3 1970-01-01  5377333333
## 4 1971-01-01  7184853037
## 5 1972-01-01  9664157065
## 6 1973-01-01 14947391339

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-12
    • 1970-01-01
    • 2021-10-30
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 2017-07-26
    相关资源
    最近更新 更多