You need to enable JavaScript to run this app. 如何优化R代码爬取ICE风控页面全量csv格式的数据链接
优惠活动
大模型
产品
解决方案
定价
更多

如何优化R代码爬取ICE风控页面全量csv格式的数据链接

爬取ICE网站动态加载文件的优化方案

现有代码失效的核心原因

你当前仅能抓到2个csv链接,本质是ICE目标板块的可下载文件并非初始静态HTML的内嵌内容:Margin Rates板块、Historic ICE Risk Model Parameter栏目的文件列表,是用户交互触发(点击展开板块)后,由JavaScript动态请求、渲染到页面上的。直接通过read_html()抓取初始静态HTML,自然无法获取交互后才加载的内容。

分步骤优化实现

1. 优先定位动态加载的真实数据接口

这是效率最高的方案,无需模拟整页渲染:

  • 打开目标ICE页面的开发者工具,切换到网络(Network)面板,筛选Fetch/XHR类型的请求
  • 手动依次点击Margin Rates板块展开、Historic ICE Risk Model Parameter栏目展开,观察浏览器发出的请求
  • 找到返回文件列表的JSON接口,直接通过R请求该接口,解析返回的结构化数据就能拿到全量csv的路径,不会出现漏抓
  • 相比爬取页面节点,接口请求的稳定性、速度都更优,也不会被前端DOM结构变动影响

2. 模拟浏览器渲染的兜底方案

如果不熟悉接口抓包逻辑,可通过无头浏览器完整模拟用户操作,渲染出全部动态内容后再抓链接,参考实现代码:

library(chromote)
library(rvest)
library(stringr)
library(purrr)

# 启动无头浏览器实例
b <- ChromoteSession$new()
# 打开目标页面
b$Page$navigate("https://www.theice.com/clear-us/risk-management#margin-rates")
# 等待页面基础加载完成
Sys.sleep(5)

# 模拟点击Margin Rates板块展开按钮(选择器需右键页面对应按钮,从元素检查工具中获取真实class/id)
b$Runtime$evaluate('document.querySelector(".margin-rates-section-toggle").click()')
Sys.sleep(2)

# 模拟点击Historic ICE Risk Model Parameter栏目展开按钮
b$Runtime$evaluate('document.querySelector(".historic-risk-param-toggle").click()')
Sys.sleep(3)

# 获取渲染完成的全量页面源码
rendered_html <- read_html(b$get_page_content())

# 提取页面内所有csv链接
full_csv_list <- rendered_html %>% 
  html_nodes("a") %>% 
  html_attr("href") %>% 
  str_subset("\\.csv$")

# 补全相对路径为完整可访问URL
full_csv_url <- ifelse(
  str_starts(full_csv_list, "http"),
  full_csv_list,
  paste0("https://www.theice.com", full_csv_list)
)

# 关闭浏览器实例
b$close()

3. 目标文件筛选与批量下载

拿到全量csv链接后,通过关键词匹配筛选和保证金策略、历史风险模型参数相关的目标文件,批量下载即可:

# 按路径关键词筛选目标文件
target_files <- full_csv_url[str_detect(full_csv_url, "historic_risk_model|margin_strategy")]

# 批量下载到本地data文件夹
dir.create("data", showWarnings = FALSE)
walk(target_files, ~{
  download.file(
    url = .x,
    destfile = file.path("data", basename(.x)),
    mode = "wb"
  )
  # 加延时避免请求过快被拦截
  Sys.sleep(1)
})

注意事项

  • 动态渲染抓取时,不要完全依赖固定等待时间,最好增加显式等待逻辑:比如检测目标文件对应的链接节点是否加载完成,再执行抓取,避免网络波动导致漏抓
  • 控制请求频率,单请求间隔建议不低于1秒,否则容易触发网站的反爬策略返回403错误
  • 补全相对路径时需校验路径前缀,避免错误拼接地址

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.30 22:06:01