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

请求帮助:修复从Yahoo Finance爬取ETF统计数据的R代码

解决方案:适配Yahoo Finance新页面结构的ETF数据爬取

问题根源

Yahoo Finance页面结构已更新,目标统计数据不再以标准HTML表格形式存在,而是通过带data-test属性的span元素存储,原代码依赖的html_table()方法自然失效。

实现代码

用rvest结合CSS选择器精准定位目标字段,代码如下:

library(rvest)
library(tibble)

ticker <- "IVV"
url <- paste0("https://finance.yahoo.com/quote/", ticker)

# 读取页面
page <- read_html(url)

# 封装字段提取逻辑
extract_field <- function(page, test_attr) {
  page %>%
    html_element(css = paste0('span[data-test="', test_attr, '"]')) %>%
    html_text()
}

# 提取目标字段
nav <- extract_field(page, "NAV-value")
pe_ratio <- extract_field(page, "PE-RATIO-value")
yield <- extract_field(page, "YIELD-value")
beta <- extract_field(page, "BETA-value")
expense_ratio <- extract_field(page, "EXPENSE_RATIO-value")

# 整理为结构化数据
result <- tibble(
  Ticker = ticker,
  NAV = nav,
  PE_Ratio_TTM = pe_ratio,
  Yield = yield,
  Beta = beta,
  Expense_Ratio = expense_ratio
)

print(result)

关键说明

  • 每个目标字段对应唯一的data-test属性值,这是当前页面定位元素的可靠标识:
    • NAV → NAV-value
    • PE Ratio TTM → PE-RATIO-value
    • Yield → YIELD-value
    • Beta → BETA-value
    • Expense Ratio → EXPENSE_RATIO-value
  • 若后续页面再次调整,需重新检查浏览器开发者工具中对应字段的data-test属性值,更新选择器即可。
  • 频繁爬取可能触发反爬限制,建议添加Sys.sleep(2)这类延迟操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 07:24:53