Ruby 如何获取没有子节点的节点文本?
我使用Nokogiri解析具有相同内容的html页面: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返回“有用的文本无用的文本”。但我只需要“有用的文本” 如何获取没有子节点的节点文本 您应该能够使用
<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()选择器似乎是最干净的解决方案。非常感谢。