使用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
相关产品推荐
相关产品推荐

