通过循环从URL下载PDF

yfjy0ee7  于 2023-03-10  发布在  其他
关注(0)|答案(1)|浏览(150)

我有一个 Dataframe df,其中包含一列URL,我想从该列下载这些URL后面的PDF。
下面是df的dput()

structure(list(Name = c("Cran", "Beginners", "Split"), Ticker = c("CAR", 
"BEG", "SPL"), URL = c("https://cran.r-project.org/doc/manuals/R-intro.pdf", 
"https://cran.r-project.org/doc/contrib/Paradis-rdebuts_en.pdf", 
"https://cran.r-project.org/web/packages/SPlit/SPlit.pdf")), class = "data.frame", row.names = c(NA, 
-3L))

我想从URL列中的所有链接下载所有PDF,并以 Name_Ticker 的形式命名,例如第一个链接为Cran_CRA。
下载一个PDF文件,我一直在使用以下代码:

require(XML)
url <- ('https://cran.r-project.org/doc/manuals/R-intro.pdf')
download.file(url, 'Cran_CRA.pdf', mode="wb")

我如何修改这段代码,使其循环遍历URL列,下载所有PDF并根据上面的示例命名它们?
此外,我如何“跳过”PDF-URL不起作用或URL错误的链接?
编辑:这是实际 Dataframe 的head()

Name                     Ticker URL                     
  <chr>                    <chr>  <chr>                   
1 Dash 2 Trade             D2T    https://dash2trade.com/assets/documents/Whitepaper.pdf
2 Calvaira                 RIA    https://whitepaper.calvaria.io/?utm_source=coincodex&utm_medium=referral
3 Flow                     FLOW   https://www.onflow.org/technical-paper?utm_source=coincodex&utm_medium=referral
4 Cosmos                   ATOM   https://cosmos.network/resources/whitepaper?utm_source=coincodex&utm_medium=referral
5 CUDOS Token              CUDOS  NA                      
6 P2P solutions foundation P2PS   https://www.p2psf.org//wp-content/uploads/2017/12/P2PS_Whitepaper_V1.1_English.pdf?utm_source=coincodex&utm_medium=referral
bnl4lu3b

bnl4lu3b1#

我们可以使用lapply来迭代 Dataframe 的长度,download.file在那里。
if语句与RCurl::url.exists配合使用,以检查url的有效性。

library(RCurl)

df2 <- df %>% as.data.frame()

lapply(1:nrow(df2), \(x) {
  if (url.exists(df2[x, "URL"])) download.file(df2[x, "URL"], paste0(df2[x, "Name"], "_", df2[x, "Ticker"], ".pdf"), mode="wb")
  })

相关问题