如何用R的rvest包抓取SEB网站的EUR互换利率表格?
解决SEB网站EUR互换利率爬取无结果的问题
你的问题核心在于目标页面的表格是通过JavaScript动态渲染的,xml2::read_html()只能抓取页面的静态HTML源码,无法获取JS加载后生成的内容,所以才会返回空节点集。以下是两种可行的解决思路:
方法1:使用浏览器模拟工具(RSelenium)
通过模拟真实浏览器的加载过程,让页面完全渲染后再抓取内容,示例代码如下:
# 安装依赖包(首次运行需执行) install.packages(c("RSelenium", "rvest")) library(RSelenium) library(rvest) # 启动Chrome驱动(需确保本地安装Chrome,且驱动版本与浏览器匹配) driver <- rsDriver(browser = "chrome", port = 4567L) remDr <- driver[["client"]] # 访问目标页面 remDr$navigate("https://sebgroup.com/our-offering/prospectuses-and-downloads/rates/swap-rates/") # 等待页面加载完成(可根据网络情况调整等待时长) Sys.sleep(5) # 获取渲染后的页面源码 page_html <- read_html(remDr$getPageSource()[[1]]) # 抓取EUR互换利率表格 eur_table <- page_html %>% html_nodes(xpath="//table[@class='table text-nowrap w-100 mb-6']") %>% html_table(header = TRUE) %>% .[[1]] # 清理资源 remDr$close() driver$server$stop() # 查看结果 print(eur_table)
方法2:直接抓取数据接口(更高效)
打开浏览器开发者工具(F12),切换到「Network」标签页,刷新页面后筛选「XHR/Fetch」类型的请求,查找返回利率数据的API接口。这类接口通常会返回JSON格式的数据,直接用httr或jsonlite包请求即可,无需模拟浏览器,效率更高。
额外提示
- 爬取前检查网站的
robots.txt文件,确保爬取行为符合网站规则。 - 模拟浏览器时避免短时间内频繁请求,防止IP被网站封禁。
内容的提问来源于stack exchange,提问作者Christian
相关产品推荐
相关产品推荐

