r - 如何使用请求负载来抓取网站?

标签 r curl rcurl rvest httr

如果您打开此网页,会出现一个绿色的“导出”按钮:http://mics.unicef.org/surveys

如果您在网络浏览器中单击它,则开始下载文件 surveys_catalogue.csv。我的目标是在 R 中复制此下载(完整的、未过滤的 csv 文件)。

当我在 chrome 中检查元素时,该页面看起来有一个请求负载 header ,我不知道如何在 R 中实现?

最佳答案

你可能会更好:

library(jsonlite)
library(tibble)
library(dplyr)

res <- GET("http://mics.unicef.org/api/survey")

content(res, as="text") %>%
  fromJSON(flatten=TRUE) %>%
  as_tibble() %>%
  glimpse()
## Observations: 312
## Variables: 11
## $ round             <chr> "MICS1", "MICS1", "MICS1", "MICS1", "MICS1",...
## $ region            <chr> "Central and Eastern Europe and the Commonwe...
## $ country           <chr> "Croatia", "Kyrgyzstan", "Turkey", "Turkmeni...
## $ country_in_filter <chr> "Croatia", "Kyrgyzstan", "Turkey", "Turkmeni...
## $ year              <chr> "1996", "1995", "1995", "1995", "1996", "199...
## $ status            <chr> "Completed", "Completed", "Completed", "Comp...
## $ reports           <list> [<Final, https://mics-surveys-prod.s3.amazo...
## $ archive           <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, ...
## $ extra_info        <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, ...
## $ dataset.status    <chr> "Not available", "Not available", "Not avail...
## $ dataset.url       <chr> "", "", "", "", "", "", "", "", "", "", "", ...

相同的数据,但还有更多的数据。

该 URL 用于构建顶部过滤器行(该站点发出一些 XHR 请求来构建表和过滤器行)。 CSV“导出”是您实际上不需要的额外步骤,因为您可以直接获取 XHR URL(就像我在这里所做的那样)。

关于r - 如何使用请求负载来抓取网站?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41410058/

相关文章:

r - devtools::install_github() - 忽略 SSL 证书验证失败

r - 在包含行的data.table中添加一个倒数列,直到遇到特殊行

r - 直接标签 : avoid clipping (like xpd=TRUE)

R:使用字符串作为参数来改变dplyr中的动词

PHP - 从 SOAP 响应中解析数据

php - curl 函数返回协议(protocol) http 在 libcurl 中不受支持或禁用

r - 我如何每秒运行一个函数

r - 如何发送 GET 请求而不等待响应

rvest - 使用 rvest 或 RCurl 或 httr 在 R 中抓取页面

RCurl getForm 传递 http header