1

当我运行这个

Nokogiri::HTML('<div class="content"><p>Hello</p><p>Good Sir</p></div>').content

我明白了

"HelloGood Sir"

有没有办法通过 Nokogiri 的 API 获得以下信息?

"Hello Good Sir"
4

2 回答 2

6
require 'nokogiri'

doc = Nokogiri::HTML('<div class="content"><p>Hello</p><p>Good Sir</p></div>')

# below will fetch all text nodes irrespective of any tag,from the current document.
doc.xpath("//text()").map(&:text)
# => ["Hello", "Good Sir"]

doc.xpath("//text()").map(&:text).join(" ")
# => "Hello Good Sir"

# below will fetch all text nodes which are wrapped inside the p tag,
# from the current document.
doc.xpath("//p").map(&:text)
# => ["Hello", "Good Sir"]

doc.xpath("//p").map(&:text).join(" ")
# => "Hello Good Sir"
于 2013-11-12T17:33:36.693 回答
4

就像 Arup 指出的那样

doc = Nokogiri::HTML('<div class="content"><p>Hello</p><p>Good Sir</p></div>')
doc.css('p').map(&:text).join(" ") #=> "Hello Good Sir"
于 2013-11-12T17:52:01.150 回答