使用R中rvest包的read_html()无法提取目标网页表格的问题
解决R语言rvest无法抓取Hockey-reference目标表格的问题
问题原因
Hockey-reference网站把Team Statistics和Team Analytics (5-on-5)这类表格包裹在HTML注释(<!-- -->)里,限制静态抓取工具直接获取数据。默认情况下read_html()不会解析注释内的内容,所以你只能拿到页面顶部未被隐藏的standings表格。
解决方案步骤
- 获取原始页面内容并转为字符串格式
- 移除HTML注释标签,释放被隐藏的表格内容
- 重新解析处理后的HTML,提取目标表格
完整代码示例
# 加载所需包 library(rvest) library(stringr) # 目标页面URL url <- "https://www.hockey-reference.com/leagues/NHL_2025.html" # 获取原始页面并移除注释标签 page_raw <- read_html(url) %>% as.character() page_processed <- str_replace_all(page_raw, "<!--|-->", "") %>% read_html() # 提取Team Statistics表格 team_stats_table <- page_processed %>% html_element(css = "#stats") %>% html_table(header = TRUE) # 提取Team Analytics (5-on-5)表格 team_analytics_table <- page_processed %>% html_element(css = "#stats_5v5") %>% html_table(header = TRUE)
说明
- 用
str_replace_all()移除所有注释的起始和结束标签,让原本被隐藏的表格变成可解析的HTML元素 - 两个目标表格的CSS选择器分别是
#stats和#stats_5v5,对应页面中表格的id属性 - 处理完成后,就能用常规的
html_element()和html_table()方法提取数据了
内容的提问来源于stack exchange,提问作者Owen Gift
相关产品推荐
相关产品推荐

