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

无法用R抓取CME Group网站表格,求转为DataFrame的解决方案

解决CME Term SOFR表格抓取问题

原因分析

该页面的表格是通过JavaScript动态渲染生成的,静态HTML抓取工具(如xml2::read_html或rvest::html_nodes)只能获取页面初始加载的静态代码,无法捕获JS加载后的表格内容。

方法1:用RSelenium模拟浏览器渲染

RSelenium可模拟真实浏览器加载页面,获取动态渲染后的完整内容:

  1. 安装并加载依赖包:
install.packages(c("RSelenium", "rvest", "dplyr"))
library(RSelenium)
library(rvest)
library(dplyr)
  1. 启动Chrome浏览器驱动(需确保ChromeDriver版本与本地Chrome匹配):
driver <- rsDriver(browser = "chrome", port = 4567L)
remDr <- driver[["client"]]
  1. 访问目标页面并等待表格加载:
remDr$navigate("https://www.cmegroup.com/market-data/cme-group-benchmark-administration/term-sofr.html")
Sys.sleep(5) # 可根据网络情况调整等待时长
  1. 解析页面源码提取表格:
page_source <- remDr$getPageSource()[[1]]
page_html <- read_html(page_source)
table_node <- html_node(page_html, "table")
term_sofr_df <- html_table(table_node, fill = TRUE)
  1. 关闭浏览器驱动:
remDr$close()
driver$server$stop()

方法2:直接调用API接口(更高效)

通过浏览器开发者工具抓包,可找到表格数据的API接口,直接请求获取数据:

  1. 安装并加载jsonlite包:
install.packages("jsonlite")
library(jsonlite)
  1. 请求API并解析为DataFrame:
api_url <- "https://www.cmegroup.com/CmeWS/mvc/TermSOFR/V1/settle"
response <- fromJSON(api_url)
term_sofr_df <- as.data.frame(response$settlements)

注:API接口可能随网站更新变化,若失效可通过浏览器F12「网络」面板重新查找数据请求。

注意事项

  • 使用RSelenium时,需保证浏览器驱动版本与本地浏览器版本一致,否则会出现启动失败问题。
  • API请求若出现访问限制,可添加请求头模拟浏览器访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 02:57:06