Загрузите несколько файлов с URL-адреса, используя R - PullRequest
1 голос
/ 20 июня 2020

У меня есть URL: https://www.cnpm.embrapa.br/projetos/relevobr/download/index.htm с географической c информацией о штатах Бразилии. Если вы щелкните в любом состоянии, вы найдете эти сетки:

enter image description here

Теперь, если вы щелкните любую сетку, вы сможете загрузить geographi c информация об этой конкретной c сетке:

enter image description here

Что мне нужно: скачать все сетки сразу. Возможно ли это?

1 Ответ

1 голос
/ 20 июня 2020

Вы можете очистить страницу, чтобы получить URL-адреса для zip-файлов, а затем перебрать URL-адреса, чтобы загрузить все:

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"
...