Небольшое расширение на решение Dave2e в демонстрации того, как получить ресурс XHR JSON с splashr
:
library(splashr) # devtools::install_github("hrbrmstr/splashr)
library(tidyverse)
splashr
требует сервера Всплеск и PKG обеспечивает способ начать один с Докер. Прочтите справочную информацию по github pg и внутри pkg, чтобы узнать, как ее использовать.
vm <- start_splash()
URL <- "http://environment.data.gov.uk/ds/survey/index.jsp#/survey?grid=TQ38"
Это извлекает все ресурсы, загруженные страницы:
splash_local %>% render_har(URL) -> resources # get ALL the items the page loads
stop_splash(vm) # we don't need the splash server anymore
Это предназначается для фона XHR ресурс с catalogName
в нем. Вам все равно нужно будет сначала найти это, но как только вы узнаете шаблон, это станет общей операцией для других точек сетки.
map_chr(resources$log$entries, c("request", "url")) %>%
grep("catalogName", ., value=TRUE) -> files_json
files_json
## [1] "http://www.geostore.com/environment-agency/rest/product/OS_GB_10KM/TQ38?catalogName=Survey"
Читайте, что:
guids <- jsonlite::fromJSON(files_json)
glimpse(guids)
## Observations: 98
## Variables: 12
## $ id <int> 170653, 170659, 170560, 170565, 178307, 178189, 201556, 238...
## $ guid <chr> "54595a8c-b267-11e6-93d3-9457a5578ca0", "63176082-b267-11e6...
## $ pyramid <chr> "LIDAR-DSM-1M-ENGLAND-2003-EA", "LIDAR-DSM-1M-ENGLAND-2003-...
## $ tileReference <chr> "TQ38", "TQ38", "TQ38", "TQ38", "TQ38", "TQ38", "TQ38", "TQ...
## $ fileName <chr> "LIDAR-DSM-1M-2003-TQ3580.zip", "LIDAR-DSM-1M-2003-TQ3585.z...
## $ coverageLayer <chr> "LIDAR-DSM-1M-ENGLAND-2003-EA-MD-YY", "LIDAR-DSM-1M-ENGLAND...
## $ fileSize <int> 76177943, 52109669, 59326278, 18048623, 13204420, 11919071,...
## $ descriptiveName <chr> "LIDAR Tiles DSM at 1m spatial resolution 2003", "LIDAR Til...
## $ description <chr> "1m", "1m", "1m", "1m", "1m", "1m", "1m", "1m", "1m", "1m",...
## $ groupName <chr> "LIDAR-DSM-TIMESTAMPED-ENGLAND-2003-EA", "LIDAR-DSM-TIMESTA...
## $ displayOrder <int> -100, -100, -100, -100, -100, -100, -100, -100, -100, -100,...
## $ metaDataUrl <chr> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, "https://data.g...
Остальное похож на другой ответ:
dl_base <- "http://www.geostore.com/environment-agency/rest/product/download"
urls <- sprintf("%s/%s", dl_base, guids$guid)
Будьте добры к сети и их сервер:
walk2(urls, guids$fileName, download.file)
Сделайте это, если считаете, что ваша система и их служба er может обрабатывать 98 одновременных загрузок файлов 70-100 МБ
download.file(urls, guids$fileName)
пакет 'splashr' от @hrbrmstr может быть полезен. вот виньетка: https://rud.is/b/2017/02/09/diving-into-dynamic-website-content-with-splashr/ – chinsoon12