【问题标题】:Assistance needed with downloading PDF in R在 R 中下载 PDF 需要帮助
【发布时间】:2016-05-30 21:39:24
【问题描述】:

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

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 = "jomisilfe@gmail.com"))

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 时没有前导零。

【问题讨论】:

    标签: r pdf web-scraping web-crawler data-science


    【解决方案1】:

    我已经设法做到了:
    通过检查 url,有时在小于 10 的天和月之前没有前导零。

    在这里,我正在创建所有带有前导零的 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')
    

    在这里,我正在创建所有没有前导零的 URL,其中天数和月数小于十。

    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')
          }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-07
      • 1970-01-01
      • 2023-01-25
      • 1970-01-01
      • 2019-08-10
      • 2016-06-14
      相关资源
      最近更新 更多