r - 当父目录的 URL 给出 404 时从网站下载文件
问题描述
我还不知道存在哪些文件,但我知道一堆肯定存在的文件的 URL 的基本结构。我想了解它们是什么并下载它们。
我可以毫无问题地下载单个文件,在这种情况下是马里兰州阿勒格尼县的土地覆盖数据:
download.file("https://cicwebresources.blob.core.windows.net/chesapeakebaylandcover/MD/ALLE_24001.zip"
, destfile ="data/GIS_downloads/")
但我想下载 MD 州的所有土地覆盖数据 .zip 文件。
我看到了一些类似这样的网络抓取示例,并试图使其适用于我的情况:
library(stringi)
baseURL<- "https://cicwebresources.blob.core.windows.net/chesapeakebaylandcover/MD/"
doc <- read_html(baseURL)
# etc
但我要调用“父目录”的 URL 返回 404 错误。
鉴于我知道它们都共享相同的 URL 格式但不知道每个县的特定字符串等,我如何列出 MD 的所有 .zip 文件?
谢谢!
解决方案
404错误应该从表面上看......也许解决方案是从一个可以加载的网页开始,并在那里找到所需的链接。正如@Gregor Thomas 和@r2evans 所建议的那样,该网站不允许我访问父目录,因此需要一种解决方法。
在这种情况下,我找到了另一个网页上列出的链接(不是 .zip 文件的父目录)。通过这种方式,我得到了所需链接的列表,尽管不是像上面评论中建议的那样巧妙地抓取。下面的代码让我现在想去的地方......
doc<-httr::GET("https://www.chesapeakeconservancy.org/conservation-innovation-center/high-resolution-data/land-cover-data-project/")
CIC<-"https://cicwebresources.blob.core.windows.net/chesapeakebaylandcover/MD/"
parsed<-XML::htmlParse(doc)
links <- XML::xpathSApply(parsed, "//a/@href")
todl<-links[grepl(CIC, links)]
该对象todl
(要下载)具有我正在寻找的链接,但不知道包含哪些层和未包含哪些层。
推荐阅读
- reactjs - 仅在重定向时才在组件中获取用户身份验证状态
- python - 当只有一个按钮应该出现时,两个按钮都会出现
- c - UNIX 上 32 位 elf 二进制缓冲区溢出和 ROP CHAIN 的问题
- matplotlib - 将盒子宽度从 IQR 更改为 seaborn boxplot 中定义的用户
- docker - 使用 nginx 作为基础镜像的 Packer Docker 构建器
- c++ - gcc 9中成员对象指针的偏移量
- javascript - 为什么使用 Promises 时不保留对象状态?
- excel - 适用于所有列和行的 VBA Excel TRIM 函数
- python - Python Selenium如何做windows句柄
- java - 子类化的替代 CDI 方法?