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

无需RSelenium,如何用R抓取巴西央行网页中的表格?

问题:抓取动态加载的网页表格(无需RSelenium)

想要抓取巴西央行网站的通胀目标历史表格:https://www.bcb.gov.br/controleinflacao/historicometas。使用rvest::read_html或httr::GET获取页面源码时看不到表格内容,但在Chrome开发者工具的Elements标签中能找到表格元素。

尝试了以下代码:

library(tidyverse)
library(rvest)

url <- "https://www.bcb.gov.br/controleinflacao/historicometas"

res <- url %>%
    read_html() %>%
    html_node("table")

结果返回{xml_nodeset (0)}。经确认表格是通过页面脚本动态加载的,已知可使用RSelenium解决,但希望找到无需RSelenium的抓取方法。

参考相关问题:

  • 抓取所有元素都在<app-root>标签内的网页(R语言)
  • 抓取网页表格返回空结果(Python示例)

解决方案:直接调用后台API获取数据

这类基于前端框架(从页面的<app-root>标签可判断是Angular)的页面,表格数据通常通过AJAX请求从后台API拉取,无需模拟浏览器渲染。具体步骤:

  1. 定位数据接口:打开Chrome开发者工具的「网络」面板,刷新页面后筛选「XHR/Fetch」请求,可找到返回表格数据的接口:https://www.bcb.gov.br/api/servico/sitebcb/historicometas

  2. 用R请求API并解析数据:

library(tidyverse)
library(httr)
library(jsonlite)

# 发送API请求
api_url <- "https://www.bcb.gov.br/api/servico/sitebcb/historicometas"
resp <- GET(api_url)

# 解析JSON并转为表格格式
table_data <- content(resp, "text") %>%
  fromJSON() %>%
  pluck("conteudo") %>%
  as_tibble()

# 查看数据结构
glimpse(table_data)

这种方法直接获取结构化的原始数据,比解析动态渲染的页面更高效,且无需依赖RSelenium这类浏览器自动化工具。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 02:25:22