我一直在嘗試從 url 串列中批量下載 pdf。可悲的是,這些網址中的每一個實際上都是 pdf 的可視化,并且上面有一個下載按鈕,我不知道如何獲取它們。
當我為不同的網站執行此操作時,我使用了這段代碼(現在有一些我需要的鏈接):
urls <- c("https://dom-web.pbh.gov.br/visualizacao/edicao/2714",
"https://dom-web.pbh.gov.br/visualizacao/edicao/2714",
"https://dom-web.pbh.gov.br/visualizacao/edicao/2716",
"https://dom-web.pbh.gov.br/visualizacao/edicao/2718",
"https://dom-web.pbh.gov.br/visualizacao/edicao/2720",
"https://dom-web.pbh.gov.br/visualizacao/edicao/2721")
names = c("DECRETO No 17.297.pdf",
"DECRETO No 17.298.pdf",
"DECRETO No 17.304.pdf",
"DECRETO No 17.308.pdf",
"DECRETO No 17.309.pdf",
"DECRETO No 17.313.pdf")
for (i in 1:length(urls)){
download.file(urls[i], destfile = names[i], mode = 'wb')
}
對于另一個網站,這導致很好的 pdf 被下載到我的作業目錄中。這個只是空的。我已經嘗試了 [https://stackoverflow.com/questions/36359355/r-download-pdf-embedded-in-a-webpage] 和 [https://stackoverflow.com/questions/42468831/how- to-set-up-rselenium-for-r],但我仍然慘遭失敗。
如果有人有一個燈泡時刻并且可以幫助我,那將是蜜蜂的膝蓋。
uj5u.com熱心網友回復:
既然您提到了 RSelenium,這是一種解決方案。
library(tidyverse)
library(rvest)
library(RSelenium)
library(netstat)
rD <- rsDriver(browser = "firefox", port = free_port())
remDr <- rD[["client"]]
get_links <- function(pages) {
remDr$navigate(pages)
Sys.sleep(10)
remDr$getPageSource()[[1]] %>%
read_html() %>%
html_element("#app > div > div > div.card.p-1.mb-3.bg-white.rounded > div.card-body > div > iframe") %>%
html_attr("src")
}
df <- tibble(
links = c(
"https://dom-web.pbh.gov.br/visualizacao/edicao/2714",
"https://dom-web.pbh.gov.br/visualizacao/edicao/2714",
"https://dom-web.pbh.gov.br/visualizacao/edicao/2716",
"https://dom-web.pbh.gov.br/visualizacao/edicao/2718",
"https://dom-web.pbh.gov.br/visualizacao/edicao/2720",
"https://dom-web.pbh.gov.br/visualizacao/edicao/2721"
)) %>%
mutate(pdf_links = map(links, get_links)) %>%
unnest(pdf_links)
names = c("DECRETO No 17.297.pdf",
"DECRETO No 17.298.pdf",
"DECRETO No 17.304.pdf",
"DECRETO No 17.308.pdf",
"DECRETO No 17.309.pdf",
"DECRETO No 17.313.pdf")
for (links in 1:length(df$pdf_links)) {
download.file(df$pdf_links[links], destfile = names[links])
}

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/492882.html
