首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用R从一个url下载多个文件

使用R从一个url下载多个文件
EN

Stack Overflow用户
提问于 2020-06-20 11:04:49
回答 1查看 438关注 0票数 1

我有一个网址:https://www.cnpm.embrapa.br/projetos/relevobr/download/index.htm,上面有巴西各州的地理信息。如果您在任何状态下单击,您将发现以下网格:

现在,如果您在任何网格中单击,您将能够下载此特定网格的地理信息:

我需要的:一次下载所有的网格。有可能吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-20 11:23:18

您可以抓取页面以获取zip文件的URL,然后遍历这些URL以下载所有内容:

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

# get page source
h <- read_html('https://www.cnpm.embrapa.br/projetos/relevobr/download/mg/mg.htm')

urls <- h %>% 
    html_nodes('area') %>%    # get all `area` nodes
    html_attr('href') %>%    # get the link attribute of each node
    sub('.htm$', '.zip', .) %>%    # change file suffix
    paste0('https://www.cnpm.embrapa.br/projetos/relevobr/download/mg/', .)    # append to base URL

# create a directory for it all
dir <- file.path(tempdir(), 'mg')
dir.create(dir)

# iterate and download
lapply(urls, function(url) download.file(url, file.path(dir, basename(url))))

# check it's there
list.files(dir)
#>  [1] "sd-23-y-a.zip" "sd-23-y-b.zip" "sd-23-y-c.zip" "sd-23-y-d.zip" "sd-23-z-a.zip" "sd-23-z-b.zip"
#>  [7] "sd-23-z-c.zip" "sd-23-z-d.zip" "sd-24-y-c.zip" "sd-24-y-d.zip" "se-22-y-d.zip" "se-22-z-a.zip"
#> [13] "se-22-z-b.zip" "se-22-z-c.zip" "se-22-z-d.zip" "se-23-v-a.zip" "se-23-v-b.zip" "se-23-v-c.zip"
#> [19] "se-23-v-d.zip" "se-23-x-a.zip" "se-23-x-b.zip" "se-23-x-c.zip" "se-23-x-d.zip" "se-23-y-a.zip"
#> [25] "se-23-y-b.zip" "se-23-y-c.zip" "se-23-y-d.zip" "se-23-z-a.zip" "se-23-z-b.zip" "se-23-z-c.zip"
#> [31] "se-23-z-d.zip" "se-24-v-a.zip" "se-24-v-b.zip" "se-24-v-c.zip" "se-24-v-d.zip" "se-24-y-a.zip"
#> [37] "se-24-y-c.zip" "sf-22-v-b.zip" "sf-22-x-a.zip" "sf-22-x-b.zip" "sf-23-v-a.zip" "sf-23-v-b.zip"
#> [43] "sf-23-v-c.zip" "sf-23-v-d.zip" "sf-23-x-a.zip" "sf-23-x-b.zip" "sf-23-x-c.zip" "sf-23-x-d.zip"
#> [49] "sf-23-y-a.zip" "sf-23-y-b.zip" "sf-23-z-a.zip" "sf-23-z-b.zip" "sf-24-v-a.zip"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62481163

复制
相关文章

相似问题

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