r - 下载文件时如何让 R 告诉我哪些链接损坏?
问题描述
我有一个指向 PDF 文件的链接列表,如下所示:
df$urls <- c("http://www.frbsf.org/publications/economics/letter/2012/el2012-15.pdf", "http://research.stlouisfed.org/publications/es/11/ES1134.pdf", "http://www.frbsf.org/publications/economics/papers/2011/wp11-18bk.pdf", "https://www.minneapolisfed.org/research/sr/sr540.pdf", "brokenlink.pdf")
我有一个脚本,可以将这些文件中的每一个下载到一个文件夹中,如下所示:
urls <- df$urls
for (url in urls) {
tryCatch({download.file(url, paste0('~/Desktop/Dataset/Folder', basename(url)))}, error = function(e) {})
}
但是,有些链接不起作用,我需要知道它们是哪些。理想情况下,每次 tryCatch 遇到断开的链接时,我都会得到一个用 NA 填充空向量的输出。换句话说,除了下载文件之外,我还会得到如下所示的输出:
urls <- c("http://www.frbsf.org/publications/economics/letter/2012/el2012-15.pdf", "http://research.stlouisfed.org/publications/es/11/ES1134.pdf", "http://www.frbsf.org/publications/economics/papers/2011/wp11-18bk.pdf", "https://www.minneapolisfed.org/research/sr/sr540.pdf", "brokenlink.pdf")
output <- c("", "", "", "", NA)
有谁知道我该怎么做?在此先感谢您的帮助!
解决方案
这是另一个使用map
and safely
from的解决方案purrr
library(purrr)
urls_list <- map(setNames(urls, urls),
safely(~download.file(.x, paste0('~/Desktop/',basename(.x)))))
Filter(function(x) is.null(x[['result']]), urls_list)
输出:
$brokenlink.pdf
$brokenlink.pdf$result
NULL
$brokenlink.pdf$error
<simpleError in download.file(.x, paste0(getwd(), "/", basename(.x))): scheme not supported in URL 'brokenlink.pdf'>
推荐阅读
- javascript - 我可以使用 html、mysql 和 NODE.js 单击一个按钮来使用 2 个 POST 请求吗?
- java - 在 Netbeans 11 中启用保存时编译选项
- android - 限制重复数组列表添加的问题
- wordpress - 如何修复 wordpress 中的 .htaccess 问题
- c# - 如何将稍微复杂的场景从 -> 映射到成员场景
- data-warehouse - 如何对链接到具有不同粒度级别的多个事实的维度表进行建模?
- c# - 从get set方法理解功能
- python - 将 curl 命令转换为 request.post
- java - 覆盖 Enum 中的 equal、toString、hashcode 方法
- wechat - 如何设置微信小程序推送消息服务?