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

使用rvest抓取维基百科时str_replace_all()导致艺术家重复计数问题

解决维基百科抓取后艺术家名称重复统计问题

问题场景

用rvest抓取西语维基百科格莱美最佳说唱专辑奖页面,移除艺术家名称里的维基百科引用标记([xxx])后,统计出现次数时,Eminem被计为3个不同条目、Kanye West被计为2个不同条目,无法得到准确统计结果。

问题原因

  1. 仅移除括号内容后,字符串残留多余空格(括号前后的空格未清理,出现"Eminem "、" Eminem"这类格式差异);
  2. 部分艺术家存在别名差异(比如Kanye West以"Ye"名义的条目未统一)。

修复代码

library(tidyverse)   
library(rvest)

# 抓取页面并提取表格
pagina <- read_html("https://es.wikipedia.org/wiki/Anexo:Premio_Grammy_al_mejor_%C3%A1lbum_de_rap") %>% 
  html_nodes(css = "table") %>%
  html_table()

# 处理表格数据
rap <- pagina[[2]] %>% 
  select(-5) %>% # 删除第5列
  mutate(
    # 移除维基百科引用标记([xxx]格式)
    Artista = str_replace_all(Artista, '\\[[^\\]]*\\]', ''),
    # 清理所有多余空格(前后空格、中间多空格)
    Artista = str_squish(Artista),
    # 统一艺术家别名(可根据实际情况补充更多映射)
    Artista = case_when(
      Artista == "Ye" ~ "Kanye West",
      TRUE ~ Artista
    )
  )

# 查看修正后的统计结果
table(rap$Artista)

关键修复点

  • 用str_squish()自动清理字符串前后空格及中间连续多空格,确保同一名词格式完全一致;
  • 通过case_when()手动映射艺术家别名,统一不同名义下的同一创作者条目。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 16:40:26