【问题标题】:Web Scraping in R TimeoutR超时中的Web抓取
【发布时间】:2021-04-27 03:59:12
【问题描述】:

我正在做一个项目,我需要从这个网站下载 FAFSA 完成数据:https://studentaid.gov/data-center/student/application-volume/fafsa-completion-high-school

我正在使用 rvest 网络抓取该数据,但是当我尝试在链接上使用函数 read_html 时,它永远不会读入,最终我不得不停止执行。我可以在其他网站上阅读,所以我不确定这是特定于网站的问题还是我做错了什么。到目前为止,这是我的代码:

library(rvest)

fafsa_link <- "https://studentaid.gov/data-center/student/application-volume/fafsa-completion-high-school"

read_html(fafsa_link)

任何帮助将不胜感激!谢谢!

【问题讨论】:

  • 具体来说,您需要哪些信息?
  • 我希望从“按州/地区划分的 FAFSA 数据”下载 MA 和 CA 电子表格

标签: r web-scraping rvest


【解决方案1】:

需要用户代理标头。下载链接也在 json 文件中给出。您可以对链接进行正则表达式(或者确实将它们解析出来);或者像我一样,正则表达式,然后替换其中的状态代码以获得额外的下载 url(给定的 url 仅在这方面有所不同)

library(magrittr)
library(httr)
library(stringr)

data  <- httr::GET('https://studentaid.gov/data-center/student/application-volume/fafsa-completion-high-school.json', add_headers("User-Agent" = "Mozilla/5.0")) %>% 
         content(as = "text")

ca <- data %>%  stringr::str_match(': "(.*?CA\\.xls)"') %>% .[2] %>% paste0('https://studentaid.gov', .)
ma <- gsub('CA\\.xls', 'MA\\.xls' ,ca)

【讨论】:

  • 以上为您提供文件的链接(cama)。然后你可以读入 df 例如stackoverflow.com/questions/41368628/…
  • 好的,谢谢!我尝试运行该代码,然后执行GET(ca, write_disk(tf &lt;- tempfile(fileext = ".xls"))) ,然后执行ca &lt;- read_excel(tf),我遇到了与以前类似的超时问题。
  • 我怀疑文件请求中需要用户代理标头
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-03
  • 1970-01-01
相关资源
最近更新 更多