R语言:处理无HTML标签字符串的read_html()+html_text()替代方案
移除字符串HTML标签的高效方案(解决
rvest::read_html()无标签报错问题) 在使用rvest移除字符串HTML标签时,常规做法是用rvest::read_html()生成html_document对象,再通过rvest::html_text()提取纯文本。但当字符串不含HTML标签时,read_html()会误将其识别为文件路径,导致批量处理报错。示例代码如下:
library(rvest) # Example data dat <- c( "<B>Positives:</B> Rangy, athletic build with room for additional growth. ...", "Positives: Better football player than his measureables would indicate. ..." ) # Success: produces html_document object rvest::read_html(dat[1]) #> {html_document} #> <html> #> [1] <body> <b>Positives:</b> Rangy, athletic build with room for additional ... # Error rvest::read_html(dat[2]) #> Error in `path_to_connection()`: #> ! 'Positives: Better football player than his measureables would #> indicate. ...' does not exist in current working directory #> ('C:/LONG_PATH_HERE').
可行解决方案
强制将字符串视为HTML内容传入:
read_html()底层依赖xml2::read_html(),通过将字符串包装成I()(AsIs对象),可强制函数把输入当作HTML内容而非文件路径,无需额外计算。示例:library(rvest) safe_extract_text <- function(x) { html_text(read_html(I(x))) } # 批量处理测试 sapply(dat, safe_extract_text)备选:轻量标签包装(兼容旧版本):
若上述方法因版本问题失效,可给字符串包裹极简HTML标签(如<div>),计算开销极小且兼容性强:safe_extract_text <- function(x) { html_text(read_html(paste0("<div>", x, "</div>"))) }
内容的提问来源于stack exchange,提问作者socialscientist
相关产品推荐
相关产品推荐

