我使用Nokogiri来解析具有相同内容的html页面:
<p class="parent">
Useful text
<br>
<span class="child">Useless text</span>
</p>
Run Code Online (Sandbox Code Playgroud)
当我打电话给方法时,page.css('p.parent').textNokogiri会返回'有用的文字无用的文字'.但我只需要'有用的文字'.
如何获取没有子节点的节点文本?
mat*_*att 28
XPath包括text()用于选择文本节点的节点测试,因此您可以执行以下操作:
page.xpath('//p[@class="parent"]/text()')
Run Code Online (Sandbox Code Playgroud)
如果相关元素可能属于多个类,那么使用XPath选择HTML类会变得相当棘手,因此这可能不太理想.
幸运的是,Nokogiri将text()选择器添加到CSS中,因此您可以使用:
page.css('p.parent > text()')
Run Code Online (Sandbox Code Playgroud)
获取直接子节点的文本节点p.parent.这也会返回一些只有空格的节点,因此您可能需要将它们过滤掉.