r - 使用 R 通过 url 批量下载时分配用作文件名链接的字符串
问题描述
我正在 通过带有 R 的 url 循环从此页面下载 xls 文件:
for(i in 8:56) {
i1 <- sprintf('%02d', i)
url <- paste0("https://journals.openedition.org/acrh/29", i1, "?file=1")
file <- paste0("myExcel_", i, ".xls")
if (!file.exists(file)) download.file(url, file)
}
我想将用作链接的字符串分配给下载的每个文件名
例如,我想使用“ds219.xls”作为https://journals.openedition.org/acrh/2908的文件名
<a href="2908?file=1">ds219.xls</a>
解决方案
您需要的文件名在 URL 标头中。所以试试下面的功能:
getURLFilename <- function(url){
require(stringi)
hdr <-paste(curlGetHeaders(url),collapse = '')
fname <- as.vector(stri_match(hdr,regex = '(?<=filename=\\").*(?=\\")'))
fname
}
对于您提供的 URL:
getURLFilename('https://journals.openedition.org/acrh/2908?file=1')
# [1] "ds219.xls"
然后,在您的循环中使用:
file <- getURLFilename(url)
if (!file.exists(file)) download.file(url, file)
推荐阅读
- javascript - 编辑没有类或 ID 的文本
- tfs - 如何更改 VSTS 中的项目图标?
- service - 启动/停止失败时 systemctl 是否应该显示输出?
- php - 带有模拟的 Symfony 单元测试服务找不到类名
- database - {...} 类型的参数不能分配给 [ ] 类型的参数
- javascript - 读取 Jira 项目中的所有卡片
- android - NavigationView中如何实现CoordinatorLayout和工具栏
- powershell - 如何允许未指定的命名参数?
- mysql - mySQL 中的完全外连接计数
- ios - 将解析列中的值抓取到标签中