首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在download.file R中使用href和target?

在download.file R中使用href和target?
EN

Stack Overflow用户
提问于 2017-09-03 22:32:51
回答 1查看 494关注 0票数 1

我有一段代码:

代码语言:javascript
复制
raw_prefix <- file.path("data", "raw")

fpa_prefix <- file.path(raw_prefix, "fpa-fod")

if(!dir.exists(fpa_prefix)){
  dir.create(fpa_prefix)
}

fpa_gdb <- file.path(fpa_prefix, "RDS-2013-0009.4_GDB", "Data", "FPA_FOD_20170508.gdb")

if (!file.exists(fpa_gdb)) {
  loc <- "https://www.fs.usda.gov/rds/fedora/objects/RDS:RDS-2013-0009.4/datastreams/RDS-2013-0009.4_GDB/content"
  dest <- paste0(fpa_prefix, ".zip")
  download.file(loc, dest)
  unzip(dest, exdir = fpa_prefix)
  unlink(dest)
  assert_that(file.exists(fpa_gdb))
}

它非常适合大多数网站以可复制工作流的名义动态下载文件,但我需要一个数据集,它有一个"href“和”目标“文件,因此很难使用download.file()下载。

该文件(也在上面的代码中)如下所示:

https://www.fs.usda.gov/rds/archive/Product/RDS-2013-0009.4/

指向页面底部的是一个名为

RDS-2013年-0009.4_GDB.zip

这就是我正试图使用上面的脚本下载的文件。

如果您检查这个元素,您会发现这个结构,它返回正确的文件!但是如何转换成R码呢?

代码语言:javascript
复制
<a href="//www.fs.usda.gov/rds/fedora/objects/RDS:RDS-2013-0009.4/datastreams/RDS-2013-0009.4_GDB/content" target="_blank">RDS-2013-0009.4_GDB.zip</a>

如果有人知道如何下载这个文件,我会非常感激的!

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-03 23:35:11

这将:

  • 查找页面上的所有.zip链接(URL和文件名)
  • 仔细阅读每一个发现并下载它们“就像浏览器会做的那样”。

请注意,write_disk()不会覆盖现有文件,因此如果下载被中断,可以删除该文件或使用overwrite=TRUE

代码语言:javascript
复制
library(rvest)
library(httr)
library(purrr)

pg <- read_html("https://www.fs.usda.gov/rds/archive/Product/RDS-2013-0009.4/")

fils <- html_nodes(pg, xpath=".//dd[@class='product']//li/a[contains(., 'zip')]") 

walk2(html_attr(fils, 'href'),  html_text(fils), 
      ~GET(sprintf("https:%s", .x), write_disk(.y), progress()))

如果您不想使用purrr,这都是基本R:

代码语言:javascript
复制
invisible(
  mapply(
    download.file, 
       url = sprintf("https:%s", html_attr(fils, 'href')),
       destfile = html_text(fils)
  )
)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46028370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档