R+Selenium如何提取指定标签下不属于子标签的独立文本节点内容
解决方法
以下是对应两种需求的实现方案:
需求1:提取未被span包裹的独立文本「AAA」
筛选.nameTitle节点下的直接文本节点、排除span等元素节点即可,示例代码如下:
text %>% html_nodes(css = '.nameTitle') %>% xml_contents() %>% # 获取节点下所有子节点(包含文本节点、元素节点) filter(xml_type(.) == "text") %>% # 仅保留纯文本节点 html_text() %>% trimws() # 去除首尾的换行、空白字符
执行后即可得到纯文本AAA。
需求2:提取带空格分隔的完整文本「AAA BBB」
直接使用rvest提供的html_text2()方法即可,该方法会自动将节点内的换行、多段空白转换为单个空格分隔,符合常规文本阅读的格式需求:
text %>% html_nodes(css = '.nameTitle') %>% html_text2()
如果遇到特殊格式场景适配不佳,也可以手动提取所有子节点文本后用空格拼接:
text %>% html_nodes(css = '.nameTitle') %>% xml_contents() %>% html_text() %>% trimws() %>% paste(collapse = " ")
原代码问题说明
你之前使用的html_text()方法默认会直接拼接所有子节点的文本内容,不会处理节点之间的换行、空白字符,所以原HTML中AAA末尾的换行被直接忽略,最终输出没有空格的AAABBB。
内容的提问来源于stack exchange,提问作者younghyun
相关产品推荐
相关产品推荐

