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

使用rvest抓取CSO发布日历遇默认7天数据提取问题求助

解决rvest无法抓取CSO发布日历动态内容的问题

问题原因

CSO官网的发布日历数据是通过JavaScript动态渲染的,read_html()只能获取页面的静态HTML源码,默认情况下看不到动态加载的未来7天数据,所以直接用html_nodes('td')提取不到内容。

解决方案

方法一:用RSelenium模拟浏览器加载(适合新手)

RSelenium可以模拟真实浏览器打开页面,等待动态内容加载完成后再抓取:

library(RSelenium)
library(rvest)
library(dplyr)

# 启动浏览器(需提前配置好ChromeDriver)
driver <- rsDriver(browser = "chrome", port = 4567L)
remDr <- driver[["client"]]

# 打开目标页面
remDr$navigate("https://www.cso.ie/en/csolatestnews/releasecalendar")

# 等待页面加载完成(可根据网络情况调整等待时间)
Sys.sleep(3)

# 获取加载后的页面源码
page_source <- remDr$getPageSource()[[1]]
url <- read_html(page_source)

# 提取日历数据
calendar_data <- url %>% 
  html_nodes('table') %>% 
  html_table() %>% 
  .[[1]]

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

# 查看结果
print(calendar_data)

方法二:直接请求API接口(高效推荐)

通过浏览器开发者工具可以找到页面加载数据的API接口,直接请求接口获取JSON数据,无需模拟浏览器:

library(httr)
library(jsonlite)
library(dplyr)

# 请求API接口获取未来7天的日历数据
response <- GET("https://www.cso.ie/api/releases/getreleases?days=7")
data <- fromJSON(content(response, "text"))

# 将JSON数据转换为数据框
calendar_df <- as.data.frame(data)

# 查看整理后的数据
print(calendar_df)

注:API接口是从页面的网络请求中抓取的,若后续网站接口变更,需要重新检查开发者工具中的请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 19:42:36