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

请求排查R语言爬取Cleaning The Glass投篮数据表格失败问题

爬取cleaningtheglass.com球员投篮数据的问题排查与解决

你代码里的直接错误

  • 变量名不匹配:你用webpage <- url %>% read_html()定义了页面对象,但提取节点时写的是table_data <- page %>% html_nodes(...),这里的page是未定义的变量,会直接导致报错,需要改成webpage %>%。

核心问题:动态内容无法被静态爬取工具捕获

cleaningtheglass.com的球员数据表格是通过JavaScript动态渲染加载的,rvest::read_html()只能获取页面初始的静态HTML源码,无法捕获JS执行后生成的动态内容——这才是你拿不到表格数据的关键原因。

解决办法:使用支持JS渲染的爬取工具

要获取动态加载的内容,你需要用能模拟浏览器运行JS的R包,比如RSelenium或playwright,以下是RSelenium的示例代码(需提前安装对应浏览器驱动,比如ChromeDriver):

library(RSelenium)
library(rvest)
library(tidyverse)

# 启动Chrome浏览器驱动
driver <- rsDriver(browser = "chrome", port = 4567L)
remDr <- driver[["client"]]

# 访问目标页面
remDr$navigate("https://cleaningtheglass.com/stats/players?stat_category=shooting_overall#/")

# 等待页面完全加载(可根据网络情况调整等待时间)
Sys.sleep(5)

# 获取渲染后的页面源码
page_source <- remDr$getPageSource()[[1]]
webpage <- read_html(page_source)

# 提取表格(可根据实际渲染后的页面结构调整CSS选择器)
table_data <- webpage %>%
  html_nodes("#shooting_overall .stat_table_container") %>%
  html_table()

# 关闭浏览器和驱动
remDr$close()
driver$server$stop()

额外注意事项

  • 该网站存在反爬机制,频繁请求可能会被封禁IP,建议添加请求间隔、使用代理IP。
  • 爬取前请遵守网站的robots.txt和使用条款,避免违规爬取行为。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 10:42:36