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

R语言抓取含合并行网页表格:拆分换行分隔的列数据

问题解决:拆分Spotify艺术家列表中的合并单元格数据

问题背景

抓取Spotify新闻页的新兴艺术家表格时,遇到两个核心问题:

  • 第一列(国家/地区)对应第二列多个艺术家(单元格跨多行合并)
  • 第二列的多个艺术家以换行符\n合并在单个单元格内
    需要将第二列的艺术家拆分到独立行,每行匹配所属的国家/地区。

当前抓取代码:

library(rvest)
# Spotify全球新兴艺术家列表
upcoming_artists_url <- "https://newsroom.spotify.com/2020-03-09/36-new-artists-around-the-world-that-are-on-spotifys-radar/"
upcoming_artists <- read_html(upcoming_artists_url)
upcoming_artists_table <- html_table(upcoming_artists)[[1]]

错误数据框示例(简化版):

structure(list(
  X1 = c("Spain", "France", "Japan\n*RADAR locally titled Early Noise"),
  X2 = c("DORA \nAleesha\nMaría José Llergo\nGuitarricadelafuente\nParanoid 1966",
         "Lous and the Yakuza \nYuzmv\nPhilippine\nHervé",
         "Fujii Kaze\nVaundy\nRina Sawayama")
), row.names = c(NA, -3L), class = c("tbl_df", "tbl", "data.frame"))

解决方案

使用tidyr包的separate_rows()函数拆分合并单元格,同时清理冗余信息:

步骤1:加载依赖包

library(rvest)
library(tidyverse) # 整合tidyr、dplyr等数据处理工具

步骤2:抓取并清洗表格

# 抓取页面并提取表格
upcoming_artists_url <- "https://newsroom.spotify.com/2020-03-09/36-new-artists-around-the-world-that-are-on-spotifys-radar/"
upcoming_artists <- read_html(upcoming_artists_url)
upcoming_artists_table <- html_table(upcoming_artists)[[1]]

# 拆分合并单元格并清理数据
cleaned_table <- upcoming_artists_table %>%
  # 按换行符拆分第二列,自动复制对应国家/地区到新行
  separate_rows(X2, sep = "\n") %>%
  # 清理艺术家名称前后的多余空格
  mutate(
    X2 = str_trim(X2),
    # 移除国家/地区列中的注释文本(如Japan行的*RADAR说明)
    X1 = str_remove(X1, "\n\\*.*")
  ) %>%
  # 重命名列名提升可读性
  rename(
    国家/地区 = X1,
    艺术家 = X2
  )

处理后的数据示例

# 部分结果展示
# # A tibble: 12 × 2
#   国家/地区 艺术家               
#   <chr>      <chr>                 
# 1 Spain      DORA                  
# 2 Spain      Aleesha               
# 3 Spain      María José Llergo     
# 4 Spain      Guitarricadelafuente  
# 5 Spain      Paranoid 1966         
# 6 France     Lous and the Yakuza   
# 7 France     Yuzmv                 
# 8 France     Philippine            
# 9 France     Hervé                 
# 10 Japan     Fujii Kaze            
# 11 Japan     Vaundy                
# 12 Japan     Rina Sawayama         

关键说明

  • separate_rows():自动拆分含多行内容的单元格,同时保留对应行的其他列数据,完美解决跨单元格合并问题
  • str_trim():去除艺术家名称前后的冗余空格(原数据换行后可能附带空格)
  • str_remove():清理国家/地区列中的额外注释,让数据更整洁

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 06:25:24