我如何提取与Nokogiri的子文本



我遇到了这个HTML:

<div class='featured'>
    <h1>
        How to extract this?
        <span>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</span>
        <span class="moredetail ">
            <a href="/hello" title="hello">hello</a>
        </span>
        <div class="clear"></div>
    </h1>
</div>

我想提取<h1>文本"How to extract this?"。我该怎么做呢?

我尝试了下面的代码,但有附加的其他元素。我不确定如何排除它们,所以我只得到<h1>文本本身。

doc = Nokogiri::HTML(open(url))      
records = doc.css(".featured h1")

#css返回一个集合,使用#at_css获得第一个匹配节点。它的所有内容(甚至包括文本)都是子元素,在本例中,文本是它的第一个子元素。如果你想要所有不是元素的子元素,你也可以使用children.reject &element?

data = '
<div class="featured">
    <h1>
        How to extract this?
        <span>Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</span>
        <span class="moredetail ">
            <a href="/hello" title="hello">hello</a>
        </span>
        <div class="clear"></div>
    </h1>
</div>
'
require 'nokogiri'
text = Nokogiri::HTML(data).at_css('.featured h1').children.first.text
text # => "n        How to extract this?n        "
或者,您可以使用xpath:
Nokogiri::HTML(data).at_xpath('//*[@class="featured"]/h1/text()').text

相关内容

  • 没有找到相关文章

最新更新