У меня есть веб-сайт, на котором есть несколько сотен PDF-файлов. Мне нужно перебрать и загрузить каждый PDF-файл на свой локальный компьютер. Я хотел бы использовать Rvest. Пытаться:
library(rvest)
url <- "https://example.com"
scrape <- url %>%
read_html() %>%
html_node(".ms-vb2 a") %>%
download.file(., 'my-local-directory')
Как получить каждый PDF-файл по ссылке? download.file()
не работает, и я понятия не имею, как получить каждый файл. Я просто получаю эту ошибку:
Error in doc_parse_raw(x, encoding = encoding, base_url = base_url, as_html = as_html, : xmlParseEntityRef: no name [68]
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")
}
URL-адрес - http, поэтому пришлось использовать config(ssl_verifypeer=FALSE)
writeBin
назовите файл по своему усмотрению. Я только что назвал его ok_1.pdf
ok_2.pdf
и так далее.
Например, на сайте есть строка «Тема». Могу ли я изменить имя сохраненного файла на сочетание «Имя» и «Тема»? Закинуть туда еще один paste0
? Или это существенный подъем?
Я отредактировал код в соответствии с вашими потребностями. @papelr
Если бы я хотел назвать файлы так, как они называются на веб-сайте, могу ли я заменить
"ok_%d.pdf"
чем-то вроде[links].pdf
?