下载许多(48)个pdf文件时,使用str_match(myurl, "UniqueID=(.+))
命名失败。我看到下载正常,但名称不起作用,完成后,我只有一个名为“ NA”的文件。
我正在从联合国组织的数据库中下载许多PDF。一切正常,因为我看到所有文件都已下载。但是,所有文件命名都出错,最后我只有一个名为“ NA”的文件。
library(downloader)
library(stringr)
for (myurl in pdfscollect) {
filename<-paste("collected/", str_match(myurl, "UniqueID=(.+)")[2], ".pdf", sep="")
download(myurl, filename)
Sys.sleep(2)
}
我希望所有pdf文件都具有唯一的名称,但是不会发生命名,最后只有一个文件带有“ NA”。
pdfscollect是包含所有链接的文件。例: pdfstest <-c(“ http://www.ilo.org/evalinfo/product/download.do;?type=document&id=8287”,“ http://www.ilo.org/evalinfo/product/download.do;?type=document&id=10523”,…。)
答案 0 :(得分:1)
如果我理解正确(?),那么问题是
paste("collected/", str_match(myurl, "UniqueID=(.+)")[2]
当您期望文档ID时,返回NA
的向量:
[1] "8287" "10523"
我建议改用类似以下的内容(它确实会获得预期的输出):
str_extract(pdfstest, "(?<=id=)\\d+")
在这里,我们使用正则表达式匹配向量中id=
的第一个urls
之后紧随其后的任意数字。
答案 1 :(得分:0)
感谢您的建议,@ sindri_baldur。最终结果是一样的,只是pdf文件的名称改变了。我现在知道也无法打开pdf文件。我认为部分问题是pdf链接是“ ..download.do ...”链接(ilo.org/evalinfo/product/download.do;?type=document&id=8287)。我想我应该以另一种方式收集这些pdf。