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

使用R的rvest包爬取Trackwrestling NCAA摔跤首轮对阵返回空值求助

问题分析与解决

你的问题核心原因及对应解决方法如下:

1. 链接临时参数已失效

你使用的链接包含twSessionId和TIM这类临时会话参数,这类参数是网站生成的短期有效凭证,过期后访问该链接会自动跳转到主页,导致read_html获取的是主页静态HTML,自然找不到.full-line元素。

2. 页面可能为JS动态渲染

即使链接有效,Trackwrestling的对阵表大概率是通过JavaScript动态加载的,而rvest只能抓取初始静态HTML,无法获取JS渲染后的内容。


解决步骤

步骤1:获取有效链接

直接从Trackwrestling官网导航到2024年NCAA一级摔跤锦标赛的对阵页面,复制当前的有效链接(此时的twSessionId和TIM为最新状态),替换代码中的旧链接。

步骤2:添加请求头模拟浏览器

如果链接有效但仍抓不到内容,给read_html添加浏览器请求头,避免被网站识别为爬虫:

library(rvest)

# 模拟Chrome浏览器请求头
headers <- c(
  "User-Agent" = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
)

champ_125_24 <- read_html(
  url = "替换为最新的有效对阵链接",
  httr::add_headers(.headers = headers)
)

first_round <- champ_125_24  |> 
  html_elements(".full-line")  |>   
  html_text2()  

步骤3:使用模拟浏览器工具抓取动态内容

如果上述方法仍无效,说明内容是JS动态加载的,改用RSelenium或playwright模拟真实浏览器行为:
以playwright为例(需先安装playwright包及浏览器驱动):

library(playwright)

# 初始化浏览器
pw <- chromium()
page <- pw$new_page()

# 访问页面
page$goto("替换为最新的有效对阵链接")

# 等待元素加载(可根据实际情况调整等待时间)
page$wait_for_selector(".full-line")

# 提取文本内容
first_round <- page$eval_all(".full-line", "elements => elements.map(el => el.textContent)")

# 关闭浏览器
pw$close()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 12:27:47