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

使用rvest爬取巴西央行网页表格返回空列表求助

解决rvest爬取巴西央行官网表格返回空列表的问题

问题原因

你访问的主页面中,目标表格并非直接嵌入在主HTML结构里,而是通过iframe框架加载外部资源实现的。直接用read_html()请求主页面,只能获取到iframe的占位标签,无法拿到表格的实际数据,因此html_table()返回空列表。

解决方案

方案1:直接请求表格的数据源链接

通过查看页面的iframe元素,可以定位到表格实际所在的数据源URL,直接请求该URL即可提取表格:

library(rvest)

# 表格实际数据源链接
target_url <- "https://www.bcb.gov.br/api/relatorio/pt-br/controleinflacao/historicometas?url=/controleinflacao/historicometas"

# 提取表格
table_data <- target_url %>%
  read_html() %>%
  html_table(fill = TRUE)

# 查看提取结果
print(table_data)
  • fill = TRUE参数用于处理表格单元格结构不规整的情况,确保能完整提取表格内容。

方案2:使用RSelenium处理动态渲染(备用)

如果方案1失效(比如页面后续改为JS动态渲染表格),可以用RSelenium模拟浏览器加载页面,获取完整的渲染后源码:

library(RSelenium)
library(rvest)

# 启动Chrome浏览器驱动(需提前安装对应版本的ChromeDriver)
driver <- rsDriver(browser = "chrome", port = 4567L)
remDr <- driver[["client"]]

# 访问目标页面
remDr$navigate("https://www.bcb.gov.br/controleinflacao/historicometas")

# 获取渲染后的页面源码
page_source <- remDr$getPageSource()[[1]]
page_html <- read_html(page_source)

# 提取表格
table_data <- page_html %>% html_table(fill = TRUE)

# 关闭浏览器驱动
remDr$close()
driver$server$stop()

# 查看结果
print(table_data)
  • 注意:使用RSelenium前,需确保本地浏览器版本与驱动版本匹配,否则会出现启动失败的问题。

内容的提问来源于stack exchange,提问作者Pedro Cardoso

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 21:18:18