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

rvest包新手求教:使用R爬取网页表格无返回值如何解决

问题原因

你抓取失败的核心原因是目标站点的表格属于JavaScript动态渲染内容,静态HTML源代码中不存在预渲染的<table>标签结构。rvest默认仅能抓取服务器直接返回的静态源码,无法解析执行页面内嵌的JS脚本完成内容渲染,因此返回空白结果。

可行解决方案

推荐使用无头浏览器模拟真实用户访问场景,等待页面JS渲染完成后再提取内容,可使用chromote包实现,操作代码如下:

# 安装依赖包(首次使用执行)
install.packages(c("chromote", "rvest", "dplyr"))

# 加载工具包
library(chromote)
library(rvest)
library(dplyr)

# 启动无头浏览器会话
b <- ChromoteSession$new()
# 跳转至目标页面
b$Page$navigate("https://www.fantrax.com/fantasy/league/vu0zoow2kk7bh64k/standings")
# 等待页面渲染完成,可根据网络情况调整等待时长(单位:秒)
Sys.sleep(3)
# 获取渲染完成后的完整HTML源码
rendered_html <- b$Runtime$evaluate("document.documentElement.outerHTML")$result$value
# 关闭浏览器会话
b$close()

# 解析源码提取表格
page <- read_html(rendered_html)
tables <- page %>% 
  html_table(fill = TRUE)

# 定位「Standings - Points」对应的首个表格,可根据实际返回的列表索引调整
standings_points_df <- tables[[1]]
注意事项
  • 可通过print(length(tables))查看提取到的表格总数,调整索引值匹配你需要的「Standings - Points」表格
  • 若网络波动大渲染慢,可适当延长Sys.sleep()的时长,或加入元素存在性判断逻辑,确保提取源码时表格已经渲染完成
  • 爬取过程中控制请求频率,遵守站点robots协议相关规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 15:54:03