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

如何用rvest统计球员星级并将xml_nodeset转为数据框?

处理球员星级统计的rvest解决方案

步骤1:将xml_nodeset转换为可操作的tibble

假设你已经通过rvest获取到存储星星的td节点集(命名为star_nodes),可以直接将其转为tibble,保留节点对象以便后续解析:

library(tibble)
library(dplyr)
library(purrr)
library(rvest)

# 转换节点集为tibble
star_tbl <- tibble(star_node = star_nodes)

步骤2:统计每个节点内的星星数量

星星在HTML中的实现通常有两种形式,对应不同的统计方式:

情况1:星星是带特定class的HTML元素(如<i class="fa fa-star"></i>)

通过CSS选择器定位星星元素,统计每个td节点内的元素数量:

star_tbl <- star_tbl %>%
  mutate(
    total_stars = map_int(star_node, ~ .x %>% html_nodes("[class*='star']") %>% length())
  )

注:将[class*='star']替换为页面实际的星星元素选择器,比如.fa-star或span.star-icon

情况2:星星是文本符号(如★)

将节点转为文本后,用字符串统计函数计数:

library(stringr)

star_tbl <- star_tbl %>%
  mutate(
    star_text = as.character(star_node),
    total_stars = str_count(star_text, "★")
  )

完整示例代码

如果还未获取节点集,这里给出从页面抓取到统计的完整流程:

# 加载所需包
library(rvest)
library(tibble)
library(dplyr)
library(purrr)
library(stringr)

# 抓取页面并定位星星所在的td节点
page <- read_html("https://cbgm.news/stats/CONN_Ratings.html")
star_nodes <- page %>% html_nodes("td[data-col='Ratings']") # 替换为实际的td选择器

# 转换为tibble并统计星级
player_star_stats <- tibble(star_node = star_nodes) %>%
  mutate(
    total_stars = map_int(star_node, ~ .x %>% html_nodes(".star") %>% length())
    # 若为文本星星则替换为:total_stars = str_count(as.character(star_node), "★")
  )

内容的提问来源于stack exchange,提问作者Gabe O.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 05:53:01