我目前正试图从这个online repository下载大约1,200个pdf文件(链接有我内置的过滤参数),我很难让pdf文件下载。我目前有这样的代码,它要么无法下载任何PDF文件,要么一次只下载一篇文章并覆盖前一篇文章:
library(tidyverse)
library(rvest)
url <- "https://www.ssoar.info/ssoar/discover?scope=/&sort_by=score&order=desc&rpp=100&filtertype_0=dateIssued&filter_relational_operator_0=equals&filter_0=%5B2000+TO+2022%5D&filtertype=journal&filter_relational_operator=equals&filter=Historical+Social+Research"
page <- read_html(url)
urls_pdf <- page %>%
html_elements("a") %>%
html_attr("href") %>%
str_subset("\\.pdf")
urls_pdf[1:100] %>% walk2(basename(.), download.file, mode = "wb")
dir(pattern = "\\.pdf")
当运行代码时,我希望所需的PDF文件都下载到我预选的文件夹中,但我一直得到错误“有50个或更多的警告(使用warnings()查看前50个)",进一步检查后显示:
警告消息:
1:In .f(.xi,.yi,.):URL https://www.ssoar.info/ssoar/bitstream/handle/document/6292/ssoar-hsr-2007-no_4__no_122-ambrosius_et_al-alte_pfade_der_integration_und.pdf?sequence=1&isAllowed=y&lnkname=ssoar-hsr-2007-no_4__no_122-ambrosius_et_al-alte_pfade_der_integration_und.pdf:无法打开destfile 'ssoar-hsr-2007-no_4__no_122-ambrosius_et_al-alte_pfade_der_integration_und.pdf?sequence=1&isAllowed=y&lnkname= ssoar-hsr-2007-no_4__no_122-ambrosius_et_al-alte_pfade_der_integration_und.pdf“,原因”参数无效"
2:In .f(.xi,.yi,.):下载具有非零退出状态
...
我会诚实地说,我不是最有经验的r,但我有点不确定我应该如何进行。
任何帮助将不胜感激。
1条答案
按热度按时间14ifxucb1#
尝试
lapply(X, FUN)
的工作方式类似于for循环。\(x)
是function(x)
的简写。download.file()
从{utils}
导出。要存储在预先选定的文件夹中,请执行以下操作:
参数
quiet = TRUE
不是必需的。如果我被要求下载多个文件,我宁愿工作是安静下来。注意,我看不出使用
{tidyverse}
的理由。你可以重写你的代码来收集pdf网址,把管道操作符替换为|>
,也就是base R
:这允许你写一个管道代码块,像这样:
注意:使用
|>
时,_
用作数据的占位符。|>
的_
就像%>%
的.
。您的代码目前收集了100个PDF。剩下的1,100个pdf怎么办?