我使用 Nokogiri 来解析具有相同内容的 html 页面:
<p class="parent">
Useful text
<br>
<span class="child">Useless text</span>
</p>
当我调用方法时page.css('p.parent').text
Nokogiri 方法时,返回“有用的文本无用的文本”。但我只需要“有用的文字”。
如何获取没有孩子的节点文本?
XPath 包括text()
用于选择文本节点的节点测试,因此您可以这样做:
page.xpath('//p[@class="parent"]/text()')
如果所讨论的元素可能属于多个类,则使用 XPath 选择 HTML 类可能会变得非常棘手,因此这可能并不理想。
幸运的是 Nokogiri 将text()
选择器添加到 CSS 中,因此您可以使用:
page.css('p.parent > text()')
获取作为p.parent
. 这也将返回一些仅为空白的节点,因此您可能必须将它们过滤掉。
您应该可以使用page.css('p.parent').children.remove
.
然后您page.css('p.parent').text
将返回没有子节点的文本。
注:page
将由remove