You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 20:45:05