【问题标题】:How to parse HTML getting the text from H1 ... H6?如何解析 HTML 从 H1 ... H6 获取文本?
【发布时间】:2014-06-22 10:57:32
【问题描述】:

我想解析一个 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

【问题讨论】:

  • 您的代码有什么问题...?你的方法是正确的,我看出来了。
  • 编辑了我的帖子。请再读一遍

标签: html ruby nokogiri


【解决方案1】:

首先使用#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"

【讨论】:

  • 好的,现在我想读取一个 URL,然后用 nokogiri 解析它(而不是从我想要读取的 html var 和我从 amazon s3 获得的 URL)
猜你喜欢
  • 2019-01-07
  • 2011-01-20
  • 2020-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-13
  • 1970-01-01
相关资源
最近更新 更多