Ruby 如何获取没有子节点的节点文本?

Ruby 如何获取没有子节点的节点文本?,ruby,nokogiri,Ruby,Nokogiri,我使用Nokogiri解析具有相同内容的html页面: <p class="parent"> Useful text <br> <span class="child">Useless text</span> </p> 有用的文本 无用文本 当我调用方法page.css('p.parent')。textNokogiri返回“有用的文本无用的文本”。但我只需要“有用的文本” 如何获取没有子节点的节点文本 您应该能够使用

我使用Nokogiri解析具有相同内容的html页面:

<p class="parent">
  Useful text
  <br>
  <span class="child">Useless text</span>
</p>

有用的文本
无用文本

当我调用方法
page.css('p.parent')。text
Nokogiri返回“有用的文本无用的文本”。但我只需要“有用的文本”


如何获取没有子节点的节点文本

您应该能够使用
page.css('p.parent').children.remove

然后您的
page.css('p.parent').text将返回不带子节点的文本


注意:
页面
将由
删除

修改。XPath包含用于选择文本节点的
text()
节点测试,因此您可以执行以下操作:

page.xpath('//p[@class="parent"]/text()')
如果所讨论的元素可能属于多个类,那么使用XPath选择HTML类可能会变得非常棘手,因此这可能不理想

幸运的是,Nokogiri将
text()
选择器添加到CSS中,因此您可以使用:

page.css('p.parent > text()')
获取作为p.parent的直接子级的文本节点。这还将返回一些仅为whtespace的节点,因此您可能必须将它们过滤掉。

text()选择器似乎是最干净的解决方案。非常感谢。