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

如何用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 04:52:57