【问题标题】:How to webscrape site with request payload?如何使用请求有效负载抓取网站?
【发布时间】:2017-05-15 13:41:44
【问题描述】:

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

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

当我在 chrome 中 inspect element 时,看起来这个页面有一个 request payload 标头,我不知道如何在 R 中实现?

【问题讨论】:

    标签: r curl rcurl rvest httr


    【解决方案1】:

    你可能会更好:

    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(就像我在这里所做的那样)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多