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

如何用RSelenium获取TD银行不可赎回GIC的1-5年期复利利率?

获取TD银行不可赎回GIC长期复利利率的RSelenium解决方案

你的问题核心在于:原CSS选择器依赖动态生成的容器ID(#container-9565195e5e),页面刷新后ID会失效;同时JS动态渲染的内容需要等待完全加载才能定位。以下是具体的实现方案:

核心解决步骤

1. 初始化RSelenium环境

确保已安装RSelenium包,启动Chrome驱动并访问目标页面:

library(RSelenium)

# 启动Chrome驱动(若ChromeDriver路径特殊需手动指定)
driver <- rsDriver(browser = "chrome", port = 4567L, chromever = "latest")
remDr <- driver[["client"]]

# 访问TD银行不可赎回GIC页面
remDr$navigate("https://www.td.com/ca/en/personal-banking/products/investments/gic/non-redeemable-gics/")

2. 等待目标板块加载

使用显式等待确保「长期复利保证投资凭证」板块完全渲染,避免因加载延迟导致元素丢失:

# 通过文本定位目标板块(XPath比动态ID更稳定)
wait_success <- remDr$waitForElement(
  using = "xpath",
  value = "//h3[contains(text(), 'Long-Term and Compound Interest')]",
  timeout = 10000  # 10秒超时
)

if (!wait_success) stop("目标板块未加载,请检查页面结构或延长超时时间")

3. 处理iframe嵌套(若存在)

部分金融网站会将动态数据放在iframe中,需先切换到对应iframe:

# 遍历所有iframe,找到包含利率数据的框架
iframes <- remDr$findElements(using = "tag name", value = "iframe")
for (iframe in iframes) {
  tryCatch({
    remDr$switchToFrame(iframe)
    # 尝试查找利率元素,找到则停止切换
    rate_check <- remDr$findElements(using = "css selector", value = ".cmp-chart__chart span")
    if (length(rate_check) > 0) break
    remDr$switchToDefaultContent()
  }, error = function(e) remDr$switchToDefaultContent())
}

4. 定位并提取利率数据

避开动态ID,使用稳定的类选择器定位利率区域,提取1-5年期及对应账户类型的利率:

# 定位利率展示容器(使用固定类名而非动态ID)
rate_container <- remDr$findElement(using = "css selector", value = ".cmp-chart__chart")
rate_elements <- rate_container$findElements(using = "css selector", value = "span")

# 提取所有利率文本
raw_rates <- sapply(rate_elements, function(el) el$getElementText()[[1]])

# 过滤出1-5年期及注册/非注册账户相关的利率
target_rates <- raw_rates[grepl("(1|2|3|4|5)-Year|TFSA|RSP|RIF|RESP|Non-Registered", raw_rates)]
print(target_rates)

5. 清理环境

完成数据提取后关闭驱动:

remDr$close()
driver$server$stop()

关键注意事项

  • 选择器稳定性:永远优先使用固定类名、文本定位(XPath)或层级结构,避免依赖动态生成的ID/类名
  • 等待机制:必须用waitForElement显式等待,不要用Sys.sleep()固定延迟,适配不同网络环境
  • 页面结构变化:金融网站可能随时调整页面布局,若代码失效需重新用Selector Gadget抓取稳定选择器

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 22:45:39