如何解析HTML从H1 ... H6获取文本?

时间:2014-06-21 13:48:40

标签: html ruby nokogiri

我想解析一个HTML页面,我只想获取<h1> .. <h6>标记内的所有文字。

我的实际剧本是:

doc = Nokogiri::HTML(open(s3_page_url).read)
doc.css('h1, h2').each do |link|
  puts link.text
end

这是我的测试代码:

html = '<html><head><title><h1>foo</h1><h2>bar</h2></title><body><p>bar</p></body></html>'
doc = Nokogiri::HTML(html)
doc.css('h1').each do |link|
  puts link.text
end

以下是提示:

foo

问题是我想得到foo bar

1 个答案:

答案 0 :(得分:0)

使用#map首先获取一个文本数组。然后#join构建一个字符串,并选择分隔符

#!/usr/bin/env ruby

require 'nokogiri'

html = <<-STRING
<html><head><title><h1>foo</h1><h2>bar</h2></title><body><p>bar</p></body></html>
STRING

doc = Nokogiri::HTML::DocumentFragment.parse(html)


doc.css('h1, h2').map(&:text).join(" ") # => "foo bar"