2016-02-18 20 views
1

在下面的代码中,每次尝试下载PDF时,handle部分似乎都会给我一个错误。在R中下载PDF所需的帮助

url <- "http://brocktonpolice.com/wp-content/uploads/" 
filename <- paste0(format(AllDays, '%Y/%m/%m%d%Y'), '.pdf') 
filenames_list <- str_extract_all(filenames, 'uploads.+pdf') 

downloadPDF <- function(filename, baseurl, folder, handle){ 
     dir.create(folder, showWarnings = FALSE) 
     fileurl <- str_c(baseurl, filename) 
     if (!file.exists(str_c(folder,"/",filename))) {  
      content <- getBinaryURL(fileurl, curl = handle) 
      writeBin(content, str_c(folder,"/",filename)) 
      Sys.sleep(1) 
     } 
} 

handle <- getCurlHandle(useragent = str_c(R.version$platform, 
        R.version.string, sep = ", "), 
        httpheader = c(from = "[email protected]")) 

l_ply(filenames_list, downloadPDF, 
     baseurl = "http://brocktonpolice.com/wp-content/uploads/", 
     folder = "Police_logs") 

我对如何下载这些PDF的想法已经用完了。 以下是我如何生成指向所有PDF的链接。

prefix <- "http://brocktonpolice.com/wp-content/uploads/" 
AllDays <- seq.Date(from = as.Date('2015-01-01'), to = Sys.Date(), by = "day") 
links <- paste0(prefix, format(AllDays, '%Y/%m/%m%d%Y'), '.pdf') 
print(links) 

ps:如果您可以想出其他方式下载PDF文件,请分享您的代码。
注意某些URL可能会给出一个错误,因为有时日和月不加零的时候都小于10

回答

0

我已经成功地做到这样说:
通过检查的URL,有时会有在几天和几个月之前没有领先的零不到十。

在这里,我创建了所有具有前导零的网址,其中日期和月份少于十个。

prefix <- "http://brocktonpolice.com/wp-content/uploads/" 
AllDays <- seq.Date(from = as.Date('2015-01-01'), to = Sys.Date(), by = "day") 
links1 <- paste0(prefix, format(AllDays, '%Y/%m/%m%d%y'), '.pdf') 

在这里,我创建的所有网址没有前导零,天和月少于十。

AllDays_NL <- gsub("0", "", format(AllDays, '%m%d%y')) 
links2 <- paste0(prefix, format(AllDays, '%Y/%m/'), AllDays_NL,'.pdf') 

由于没有当我们这样做,并没有一个前导零,我们将会把两个列表一起,提取数据,每当我们有比赛

link <- c(links1,links2) 

filename <- paste0(format(AllDays, '%Y_%m_%d'),'.pdf') 
dest <- tempfile(fileext = ".pdf") 

for (x in 1:length(link)) { 

     if (!file.exists(filename[x])) { 
      download.file(link[x],dest, mode = 'wb') 
     } 

} 
上图案清晰