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

R脚本与Excel无法读取CME原油期货网页表格问题求助

问题分析与解决办法

嘿,你的问题我太熟悉了——目标网页的表格是靠JavaScript动态渲染出来的,而你用的XML和RCurl只能抓取页面的静态源码,根本看不到JS加载后的表格内容,所以才会返回NULL。Excel Power Query直接打开链接也是同样的问题,它默认只抓静态内容,不会执行网页里的JS。

一、先搞定R脚本的问题

推荐用支持动态页面抓取的工具,给你两个靠谱的方案:

方案1:用RSelenium模拟真实浏览器

这个方法会真的打开浏览器加载页面,确保所有动态内容都渲染完成,步骤如下:

library(RSelenium)
library(rvest)

# 启动Chrome浏览器驱动(注意要下载和你Chrome版本匹配的ChromeDriver)
driver <- rsDriver(browser = "chrome", chromever = "你的Chrome版本号,比如114.0.5735.90")
remDr <- driver[["client"]]

# 访问目标页面
remDr$navigate("http://www.cmegroup.com/trading/energy/crude-oil/west-texas-intermediate-wti-crude-oil-calendar-swap-futures_quotes_settlements_futures.html")

# 等5秒让页面加载完全(如果页面加载慢可以延长时间)
Sys.sleep(5)

# 获取渲染后的页面源码,提取表格
page_source <- remDr$getPageSource()[[1]]
tables <- read_html(page_source) %>% html_table(fill = TRUE)

# 找到行数最多的那个表格(就是你要的结算数据)
target_table <- tables[[which.max(sapply(tables, nrow))]]

# 用完记得关掉浏览器和驱动
remDr$close()
driver$server$stop()

# 查看结果
print(target_table)

方案2:直接调用CME的API(更高效)

其实CME的很多数据都有公开的API接口,不用费劲抓页面。你可以自己找一下:打开浏览器的开发者工具(按F12),切换到「Network」标签,刷新页面后筛选「XHR」类型的请求,找到返回结算数据的那个请求,复制它的URL,然后用httr直接请求:

library(httr)
library(jsonlite)

# 替换成你找到的真实API地址
api_url <- "这里填你在开发者工具里找到的API链接"
# 模拟浏览器请求头,避免被拦截
response <- GET(api_url, add_headers("User-Agent" = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"))
data <- fromJSON(content(response, "text"))

# 把JSON转成数据框
df <- as.data.frame(data)
print(df)

二、实现Excel每日自动更新的办法

给你两个可行的思路:

方法1:Power Query + VBA模拟浏览器

Power Query本身不支持JS渲染,但可以用VBA调用Selenium加载页面,把数据导入Excel,再设置定时刷新:

  • 先下载Selenium的VBA驱动,添加到Excel的VBA引用里;
  • 写VBA脚本模拟浏览器打开页面、提取表格数据到工作表;
  • 用Windows任务计划定时触发Excel文件的宏,实现每日自动更新。

方法2:Power Query直接请求API

如果找到了CME的API接口,直接在Power Query里新建「从Web」请求,输入API地址,加载数据后,设置Excel的「刷新全部」定时任务就行,这个方法更高效,不用模拟浏览器。

最后说下你原代码的问题

你用getURL拿到的只是页面的静态HTML源码,而目标页面的表格是页面加载完成后,通过JavaScript从后端拉取数据再渲染出来的,静态源码里根本没有表格内容,所以readHTMLTable找不到任何表格,自然返回NULL啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:19:16