如何在R中将爬取的HTML文本拆分生成多列数据表?
解决方案
针对MyAnimeList中.mt4元素合并的信息拆分需求,这里提供两种高效的R语言处理方案,可直接与你已有的title、rating数据表合并:
方法一:基于strsplit生成的列表处理
你的代码已经通过strsplit("\n")把每个条目拆成了包含3个元素的列表,直接将列表转换为数据框后,和已有数据合并即可:
library(dplyr) library(purrr) library(tibble) # 将info列表转换为含media、serialization、members列的数据框 info_df <- map_dfr(info, ~tibble( media = .x[1], serialization = .x[2], members = .x[3] )) # 与已有的title、rating数据表合并(假设你的已有表名为manga_df) final_df <- bind_cols(manga_df, info_df)
方法二:直接处理未拆分的字符串(更简洁)
去掉strsplit后,用tidyr::separate直接按换行符拆分字符串,一步生成目标列:
library(dplyr) library(tidyr) library(rvest) library(tibble) # 获取未拆分的原始字符串 info_str <- html_nodes(manga, ".mt4") %>% html_text2() # 拆分字符串并生成数据框 info_df <- tibble(raw_info = info_str) %>% separate(raw_info, into = c("media", "serialization", "members"), sep = "\n") # 合并数据 final_df <- bind_cols(manga_df, info_df)
可选优化:转换members列为数值型
如果需要把members列从带逗号的字符转为数值,添加以下处理:
final_df <- final_df %>% mutate(members = readr::parse_number(members))
内容的提问来源于stack exchange,提问作者doot
相关产品推荐
相关产品推荐

