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

使用R语言抓取网页表格内容遇语法错误,求技术解决方案

R语言抓取网页表格得分数据的正确方法

先修正你代码里的核心问题

你之前的代码主要犯了xpath语法错误和函数使用逻辑错误,逐个拆解:

  • 代码1:xpath写法不符合语法规范(正确的class选择应为//*[@class='visitor center']),且错误混用html_attr()(用于提取元素属性)和html_table()(用于提取表格内容),同时存在字符串引号嵌套冲突。
  • 代码2:xpath多了多余的*,正确写法是//table[@class='statistics'],且不需要调用html_attr()。
  • 代码3:xpath定位到的是页面容器节点而非表格节点,因此返回空列表。

正确实现代码

以下是抓取目标网页球队及单节得分数据并保存为CSV的完整代码:

# 加载所需库
library(rvest)
library(stringr)

# 读取目标网页
url <- "https://www.pro-football-reference.com/boxscores/202209080ram.htm"
page <- read_html(url)

# 抓取单节得分表格(对应页面里的linescore表格)
quarter_score_table <- page %>%
  # 用CSS选择器定位表格,比xpath更简洁不易出错
  html_node(css = "table.linescore") %>%
  # 提取表格内容,自动识别表头
  html_table(header = TRUE)

# (可选)如果需要抓取statistics类表格,用下面的代码
# stats_table <- page %>%
#   html_node(xpath = "//table[@class='statistics']") %>%
#   html_table(header = TRUE)

# 保存为CSV文件
write.csv(quarter_score_table, "team_quarter_scores.csv", row.names = FALSE)

关键说明

  • 优先使用CSS选择器(如table.linescore)定位元素,比xpath更直观;
  • html_node()用于获取单个节点,html_nodes()用于获取多个节点,按需选择;
  • html_table()直接作用于表格节点,无需先调用html_attr()。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 18:52:49