【问题标题】:Downloading all PDFs from URL从 URL 下载所有 PDF
【发布时间】:2018-12-17 17:35:00
【问题描述】:

我有一个包含数百个 PDF 的网站。我需要遍历并将每个 PDF 下载到我的本地计算机。我想使用。尝试:

library(rvest)

url <- "https://example.com"

scrape <- url %>% 
  read_html() %>% 
  html_node(".ms-vb2 a") %>%
  download.file(., 'my-local-directory')

如何从链接中获取每个 PDF? download.file() 不起作用,我不知道如何获取每个文件。我只是得到这个错误:

doc_parse_raw(x, encoding = encoding, base_url = base_url, as_html = as_html, : xmlParseEntityRef: 无名 [68]

【问题讨论】:

    标签: rvest r web-scraping rvest


    【解决方案1】:
    library(rvest)
    
    url <- "https://example.com"
    page<- html_session(url,config(ssl_verifypeer=FALSE))
    
    links<-page %>% html_nodes(".ms-vb2 a") %>% html_attr("href")
    subject<-page %>% html_nodes(".ms-vb2:nth-child(3)") %>% html_text()
    name<-links<-page %>% html_nodes(".ms-vb2 a") %>% html_text()
    
    for(i in 1:length(links)){
      pdf_page<-html_session(URLencode(paste0("https://example.com",links[i])),config(ssl_verifypeer=FALSE))
      writeBin(paste0(name[i],"-",subject[i],".pdf")
    }
    

    网址是http,所以必须使用config(ssl_verifypeer=FALSE)

    writeBin 根据您的需要命名文件。我刚刚把它命名为ok_1.pdfok_2.pdf等等

    【讨论】:

    • 如果我想将文件命名为网站上的名称,我可以将"ok_%d.pdf" 替换为[links].pdf 之类的名称吗?
    • 例如,在网站上有一个“主题”行。我可以将保存文件的名称更改为“名称”和“主题”的组合吗?在里面再扔一个paste0?或者这是一个巨大的提升?
    • 我现在已经根据您的需要编辑了代码。 @papelr
    猜你喜欢
    • 1970-01-01
    • 2021-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-04
    相关资源
    最近更新 更多