使用R下载CME Group动态URL(aspx)文件遇问题
解决R语言抓取CME FedWatch工具「All upcoming meetings」文件的问题
问题原因
你之前的代码仅抓取静态HTML中的<a>标签,但CME网站的「Downloads」标签内容是动态渲染的,静态源码里没有直接暴露下载链接,因此无法通过常规的rvest静态抓取找到文件路径。
解决方案1:直接调用真实下载接口(推荐)
通过浏览器开发者工具的网络请求分析,「All upcoming meetings」的Excel文件真实下载地址是固定的API接口,直接请求即可:
library(readxl) library(httr) # 真实文件下载接口URL file_url <- "https://www.cmegroup.com/CmeWS/mvc/fedwatch/meetings/all/upcoming.xlsx" # 发送请求并保存文件到本地 response <- GET(file_url) writeBin(content(response, "raw"), "all_upcoming_meetings.xlsx") # 读取文件到R环境 fedwatch_data <- read_excel("all_upcoming_meetings.xlsx") # 查看前几行数据 head(fedwatch_data)
解决方案2:模拟浏览器操作(适配动态页面变化)
如果后续API地址发生变化,可使用RSelenium模拟真实用户点击操作,绕过动态渲染限制:
前置准备
- 安装RSelenium包:
install.packages("RSelenium") - 下载对应浏览器的驱动(如ChromeDriver),并配置系统环境变量(或在代码中指定路径)
library(RSelenium) library(readxl) # 启动Chrome浏览器驱动(端口可自定义) driver <- rsDriver(browser = "chrome", port = 4567L) remDr <- driver[["client"]] # 打开目标页面 remDr$navigate("https://www.cmegroup.com/markets/interest-rates/cme-fedwatch-tool.html") # 等待页面加载,切换到「Downloads」标签 Sys.sleep(3) download_tab <- remDr$findElement(using = "css selector", value = "a[href='#downloads']") download_tab$clickElement() # 等待下载内容加载,找到并点击「All upcoming meetings」下载按钮 Sys.sleep(2) download_btn <- remDr$findElement(using = "css selector", value = "a[data-title='All upcoming meetings']") download_btn$clickElement() # 等待下载完成,读取文件(替换为你的默认下载路径) Sys.sleep(5) # Windows用户示例路径:"C:/Users/你的用户名/Downloads/all_upcoming_meetings.xlsx" download_path <- "~/Downloads/all_upcoming_meetings.xlsx" fedwatch_data <- read_excel(download_path) head(fedwatch_data) # 关闭浏览器和驱动 remDr$close() driver$server$stop()
内容的提问来源于stack exchange,提问作者Ham
相关产品推荐
相关产品推荐

