我知道Hpricot仍然是一个标准,但我记得听说过更快,更具表现力的Ruby解析器。
有人知道它叫什么,是否值得从Hpricot转换?
提前致谢
答案 0 :(得分:11)
您可能正在考虑Nokogiri。 我自己没有用过它,但“每个人”都在谈论它,benchmarks看起来很有趣:
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)
答案 1 :(得分:5)
有多种工具可供选择。我使用Nokogiri。
演示:
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]
Ryan Bates做了一个关于使用它的精彩截屏:#190: Screen Scraping with Nokogiri。
答案 2 :(得分:2)
它将自己作为轻量级快速和脏的解析器出售。我发现界面非常直观,并且在过去将它用于项目时会出现“Ruby-ish”,考虑到它是一个Python端口,这可能有点令人惊讶。
编辑:看起来它不再被遗忘,所以它可能不是你想要的那个。看起来像Nokogiri是你听说过的。
答案 3 :(得分:1)
不要使用正则表达式 - ruby的正则表达式太慢了。 Hpricot很棒,Nokogiri看起来很有希望,但我还没有直接使用它。