1

最快的方法是什么。

我可能有可能(或可能不)包含“说明”一词的 html 文档,后跟几行说明。我想解析这些包含“说明”一词和后面几行的页面。

4

3 回答 3

1

也许沿着这条线

require 'rubygems'
require 'nokogiri'

def find_instructions doc
  doc.xpath('//body//text()').each do |text|
    instructions = text.content.select do |line|
      # flip-flop matches all sections starting with
      # "Instructions" and ending with an empty line
      true if (line =~ /Instructions/)..(line =~ /^$/) 
    end
    return instructions unless instructions.empty?
  end
  return []
end

puts find_instructions(Nokogiri::HTML(DATA.read))


__END__
<html>
<head>
  <title>Instructions</title>
</head>
<body>
lorem
ipsum
<p>
lorem
ipsum
<p>
lorem
ipsum
<p>
Instructions
- Browse stackoverflow
- Answer questions
- ???
- Profit

More
<p>
lorem
ipsum
</body>
</html>
于 2009-12-11T10:50:47.273 回答
0

您可以从测试文档是否匹配开始:

if open('docname.html').read =~ /Instructions/
  # Parse to remove the instructions.
end

我建议使用 Hpricot 然后提取您想要的部分 - 这或多或少会根据您的 html 结构而变得困难。如果您需要更具体的帮助,请发布有关该结构的更多详细信息。

于 2009-12-11T04:54:45.550 回答
0

这不是最“正确”的方式,但大部分都有效。使用正则表达式查找字符串:ruby regex

您想要的正则表达式类似于 /instructions([^<]+)/. 这假设您以 < 字符结尾。

于 2009-12-11T04:44:20.300 回答