如何用rvest提取div标签内非span子标签的目标文本?
解决方法
方法一:用XPath精准定位目标文本
直接通过XPath选取value-highlight div下的纯文本节点,跳过内部的vals span:
library(rvest) html <- read_html(TESTURL) # 定位div下的文本节点,自动排除子span的内容 target_text <- html %>% html_nodes(xpath = "//div[@class='value-highlight']/text()") %>% html_text(trim = TRUE)
trim = TRUE会自动去掉文本前后的换行、空格,得到干净的目标内容。
方法二:先移除不需要的span再提取
先选中目标div,移除里面的vals span元素,再提取剩余文本:
library(rvest) library(magrittr) html <- read_html(TESTURL) target_text <- html %>% html_nodes('.value-highlight') %>% # 找到内部的span并移除 html_node('.vals') %<>% xml_remove() %>% # 返回父div节点提取文本 html_parent() %>% html_text(trim = TRUE)
关于你之前代码的问题
你之前用html_text()会提取目标元素所有后代的文本,包括子span里的内容。如果只返回了span的文本,大概率是div里的目标文本被大量空白字符包裹,看起来像是没返回,用上面两种方法就能精准拿到你要的内容。
内容的提问来源于stack exchange,提问作者HT5156
相关产品推荐
相关产品推荐

