我试图从雅虎财经获取 ETF 摘要统计数据。例如,页面链接为https://finance.yahoo.com/quote/IVV。图表下方是要抓取的表格,关键字段是资产净值、市盈率 TTM、收益率、贝塔值和费用比率。我以前使用过 rvest 包,如下所示,但它不再起作用,因为我怀疑页面结构已经改变
ticker <- "IVV"
url <- paste0("https://finance.yahoo.com/quote/",ticker)
df <- url %>%
read_html() %>%
html_table() %>%
map_df(bind_cols) %>%
as_tibble()
任何帮助表示赞赏
该链接中似乎不再有表格元素,因为您要查找的信息现在包含在列表元素中。我已经调整了代码以捕获每个列表元素中的标签和值。
library(rvest)
library(purrr)
library(dplyr)
ticker <- "IVV"
url <- paste0("https://finance.yahoo.com/quote/",ticker)
ivv_html <- read_html(url)
node_txt <- ".svelte-tx3nkj" # This contains "table" info of interest
df <- ivv_html %>%
html_nodes(paste0(".container", node_txt)) %>%
map_dfr(~{
tibble(
label = html_nodes(.x, paste0(".label", node_txt)) %>%
html_text(trim = TRUE)
,value = html_nodes(.x, paste0(".value", node_txt)) %>%
html_text(trim = TRUE)
)
})
df %>%
filter(label %in% c("NAV", "PE Ratio (TTM)", "Yield", "Beta (5Y Monthly)", "Expense Ratio (net)"))
# A tibble: 5 × 2
label value
<chr> <chr>
1 NAV 519.85
2 PE Ratio (TTM) 26.22
3 Yield 1.37%
4 Beta (5Y Monthly) 1.00
5 Expense Ratio (net) 0.03%
添加
.container
类会将您要查找的信息限制为位于图表下的“表格”,否则将从该页面提取带有 .svelte-tx3nkj
类标记的所有信息。