最佳Rails HTML解析器

最佳Rails HTML解析器,html,ruby,parsing,Html,Ruby,Parsing,我知道Hpricot仍然是一个标准,但我记得听说过Ruby有一个更快、更具表现力的HTML解析器 有人知道它叫什么吗?它是否值得从Hpricot转换到Hpricot 提前谢谢您可能正在考虑。 我自己也没用过,但“每个人”都在谈论它,它看起来确实很有趣: hpricot:html:doc 48.930000 3.640000 52.570000 ( 52.900035) hpricot2:html:doc 4.500000 0.020000 4.520000 ( 4.518984) nok

我知道Hpricot仍然是一个标准,但我记得听说过Ruby有一个更快、更具表现力的HTML解析器

有人知道它叫什么吗?它是否值得从Hpricot转换到Hpricot


提前谢谢

您可能正在考虑。 我自己也没用过,但“每个人”都在谈论它,它看起来确实很有趣:

hpricot:html:doc  48.930000 3.640000 52.570000 ( 52.900035)
hpricot2:html:doc  4.500000 0.020000  4.520000 (  4.518984)
nokogiri:html:doc  3.640000 0.130000  3.770000 (  3.770642)
还有

它以轻量级的、快速的、肮脏的解析器的形式销售自己。在过去的项目中使用它时,我发现它的界面非常直观且“Ruby-ish”,考虑到它是Python端口,这可能有点令人惊讶


编辑:看起来它已经不再维护了,所以它可能不是您要找的那个。看起来Nokogiri是你听说过的最新版本。

不要使用正则表达式——ruby的正则表达式太慢了。Hpricot非常棒,Nokogiri看起来很有前途,尽管我还没有直接使用过它。

有多种工具可用。我用

演示:

需要“rubygems”
需要“nokogiri”
doc=Nokogiri::HTML(%){
你好,世界
一些文本

}) title=doc.at_css(“h1.title”).text content=doc.at_css(“p”).text url=doc.at_css(“a”)[:href]
Ryan Bates制作了一个关于如何使用它的优秀的屏幕广播:

文档


教程

Nokogiri的另一个优点是,它是基于Hpricot构建的,因此语法几乎相同。所以,切换对你来说应该没什么大不了的。。我还想添加LibXML,它速度很快,但无法处理标准的web野生HTML。
require 'rubygems'
require 'nokogiri'

doc = Nokogiri::HTML(%{
  <h1 class="title">Hello, World</h1>
  <p>Some text</p>
  <a href="http://www.google.com/">Some link</a>
})

title   = doc.at_css("h1.title").text
content = doc.at_css("p").text
url     = doc.at_css("a")[:href]