使用Selector Gadget在R中爬取Yahoo Finance的表格及URL提取问题
爬取Yahoo Finance META分析页面的问题解决
问题1&2:静态抓取缺失表格的原因
- 出现这种差异核心原因是页面部分表格属于动态渲染内容:
read_html()是静态HTML抓取工具,只能获取页面首次加载的原始代码;而Yahoo Finance把部分分析表格放在了JavaScript动态生成的模块里,静态抓取无法触发JS执行,自然拿不到这部分内容。 - 本地保存的HTML是浏览器执行完所有JS后的完整页面,
read_html_live()是模拟浏览器环境加载页面,会自动执行JS渲染动态内容,所以能抓取到全部9个表格。
问题3:提取第7、8个表格中的URL
用read_html_live()拿到完整页面后,按以下步骤提取:
- 先获取页面所有表格:
library(rvest) page <- read_html_live("https://au.finance.yahoo.com/quote/META/analysis") tables <- page |> html_elements("table")
- 定位第7、8个表格(R语言索引从1开始),提取其中
<a>标签的href属性:
# 提取第7个表格的URL table7_urls <- tables[[7]] |> html_elements("a") |> html_attr("href") # 提取第8个表格的URL table8_urls <- tables[[8]] |> html_elements("a") |> html_attr("href")
- 由于Yahoo的链接多为相对路径,需要补全域名:
full_table7_urls <- paste0("https://au.finance.yahoo.com", table7_urls) full_table8_urls <- paste0("https://au.finance.yahoo.com", table8_urls)
内容的提问来源于stack exchange,提问作者shani
相关产品推荐
相关产品推荐

