R语言编写网页爬虫下载指定页面全部PDF代码报错求解
R语言下载RBI印度经济统计手册页面PDF文件问题排查
原有代码核心错误点
- 语法错误:
page <- read_html(...)行末尾多余的管道符%>%,导致赋值逻辑断裂,和下一行代码语法冲突 - 逻辑错误:提取到PDF直链后不需要额外调用
read_html读取PDF内容、查找#raw-url节点,该逻辑仅适用于GitHub类平台的附件下载场景,RBI官网的PDF链接本身就是有效下载地址,这部分多余操作会直接触发解析报错 - 语法错误:生成
raw_list的管道末尾多余的管道符%>%,和后续for循环语法冲突
修正后可运行代码
# 加载所需包 library(rvest) library(stringr) library(purrr) # 1. 读取目标页面 page <- read_html("https://www.rbi.org.in/scripts/AnnualPublications.aspx?head=Handbook%20of%20Statistics%20on%20Indian%20Economy") # 2. 提取所有PDF直链 raw_list <- page %>% html_nodes("a") %>% html_attr("href") %>% str_subset("\\.pdf$") %>% # 匹配以.pdf结尾的链接 str_c("https://www.rbi.org.in", .) # 拼接完整下载地址 # 3. 批量下载PDF到当前工作目录 # 可选:提前创建专用文件夹存储 # dir.create("RBI_handbook_pdfs", showWarnings = F) # setwd("RBI_handbook_pdfs") walk(raw_list, ~download.file(.x, destfile = basename(.x), mode = "wb", quiet = F))
补充说明
如果遇到下载中断,可添加延时避免触发网站反爬限制,修改下载逻辑如下:
for (url in raw_list) { download.file(url, destfile = basename(url), mode = "wb") Sys.sleep(2) }
运行前可先打印raw_list确认链接数量和有效性,避免无效下载。
内容的提问来源于stack exchange,提问作者Manu
相关产品推荐
相关产品推荐

