如何从URL列表爬取并下载PDF,按分类变量自定义命名?
解决方案:按年份+姓名前缀批量命名下载PDF
直接修改文件名生成逻辑,从你的数据库中提取Year和Name字段构建符合要求的文件名,适配1000+条数据的批量下载需求:
修改后的完整代码
# 从数据库生成目标文件名:年份_姓名前两个字母.pdf save_here <- paste0(database$Year, "_", substr(database$Name, 1, 2), ".pdf") # 可选:检查重复文件名,避免文件被意外覆盖 if (any(duplicated(save_here))) { duplicate_files <- unique(save_here[duplicated(save_here)]) message("警告:发现重复文件名,可能导致文件覆盖:", paste(duplicate_files, collapse = " ")) } # 批量下载PDF(mode = "wb" 确保二进制文件下载完整) mapply(download.file, database$URL, save_here, mode = "wb")
关键说明
substr(database$Name, 1, 2):提取姓名字段的前两个字符,和你示例中的Jo(John)、Pa(Paul)格式完全匹配paste0():无间隔拼接年份、下划线、姓名前缀和.pdf后缀,生成目标文件名- 直接使用
database$URL和生成的save_here一一对应,无需手动指定下载数量,适配全量1000+条数据 - 添加
mode = "wb"参数:PDF是二进制文件,必须指定该模式才能保证下载的文件不损坏
原有代码的问题
你之前的代码中save_here是手动生成的序号命名(document_1.pdf),没有关联数据库中的Year和Name字段,因此无法根据变量动态修改文件名。
内容的提问来源于stack exchange,提问作者Gabriel Barbosa
相关产品推荐
相关产品推荐

