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

如何使用Nokogiri获取剔除所有文本内容的完整HTML结构

正确实现方案

直接定位所有文本节点并移除即可,不会破坏原有标签结构:

require 'nokogiri'
x = "<html>  <body>  <div class='example'><span>Hello</span></div></body></html>"
doc = Nokogiri::HTML.parse(x)
# 匹配所有文本节点并删除
doc.xpath("//text()").remove
# 输出时使用save_with: 0可以避免Nokogiri自动添加缩进、DOCTYPE等额外内容
puts doc.to_html(save_with: 0)

运行后输出结果:

<html><body><div class="example"><span></span></div></body></html>

原有代码错误原因

  • 之前使用的//*[not(text())]XPath规则,仅匹配没有直接子文本节点的元素,示例中<span>包含Hello文本,所以不会被匹配到,无法处理该层级的文本内容
  • 调用a.children.remove会删除元素的所有子节点,除了文本节点外也会把子元素一并删除,会破坏原有的标签嵌套结构

内容的提问来源于stack exchange,提问作者jayp

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:15:03