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

使用rvest爬取含data_table类网页的tbody返回空列表求助

解决动态表格爬取的tbody空列表问题

问题原因

目标网页的表格数据是通过JavaScript动态渲染生成的,read_html()只能获取页面初始的静态HTML,此时<tbody>标签内还未填充数据,所以XPath查询会返回空列表。

解决方案

方案1:直接抓取整个表格(无需指定tbody)

rvest的html_table()函数可自动解析整个表格结构,无需定位到<tbody>,直接选择表格节点即可:

library(dplyr)
library(rvest)
link <- "https://www.mariokartcentral.com/mkc/registry/players"
page <- read_html(link)

# 直接定位表格节点,跳过tbody层级
table_data <- page %>%
  html_node('#players_list table') %>%
  html_table(fill = TRUE)

# 查看前几行数据
head(table_data)

方案2:模拟浏览器渲染动态内容(适用于滚动/异步加载的表格)

如果表格数据是滚动页面后异步加载的,需要用RSelenium模拟浏览器运行JavaScript,获取完整渲染后的页面:

library(RSelenium)
library(rvest)
library(dplyr)

# 启动Chrome浏览器驱动(需提前安装对应版本的ChromeDriver)
driver <- rsDriver(browser = "chrome", port = 4567L)
remote_driver <- driver[["client"]]

# 访问目标页面
remote_driver$navigate("https://www.mariokartcentral.com/mkc/registry/players")

# 获取渲染完成的页面源码
page_source <- remote_driver$getPageSource()[[1]]
page <- read_html(page_source)

# 提取表格数据
table_data <- page %>%
  html_node('#players_list table') %>%
  html_table(fill = TRUE)

head(table_data)

# 关闭浏览器与驱动
remote_driver$close()
driver$server$stop()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 11:52:16