回答
我还没有尝试过,但我最近读到Feedzirra(它声称性能待建): -
Feedzirra是饲料库, 设计的尽快获得并更新许多供稿 。这包括使用libcurl-multi的 通过 taf2-curb gem更快的http获取, 和libxml通过nokogiri和 sax-machine进行更快的解析。
不知道的性能,但类似的问题在Parsing Atom & RSS in Ruby/Rails?
回答您可能还考虑角度来说,Hpricot,这解析XML,但假定它是良好且没有做任何验证。
http://wiki.github.com/why/hpricot http://wiki.github.com/why/hpricot/hpricot-xml
您可以使用RFeedParser,这是一个(着名)Python Universal FeedParser的Ruby端口。它基于Hpricot,使用起来非常快速和简单。
http://rfeedparser.rubyforge.org/
一个例子:
require 'rubygems'
require 'rfeedparser'
require 'open-uri'
feed = FeedParser::parse(open('http://feeds.feedburner.com/engadget'))
feed.entries.each do |entry|
puts entry.title
end
当你只有一把锤子,一切看起来都像钉子。考虑一下除Ruby以外的解决方案。尽管我喜欢Ruby和Rails,并且不会将它们放在Web开发中,也可能不适用于特定于领域的语言,但我更喜欢大量提升您所描述的Java类型,或者Python甚至C++的类型。
鉴于这一目标解析数据很可能它可以为您的解决方案的轨道部分和其他语言的部分之间的共同点扮演一个数据库。然后,您正在使用最好的工具来解决您的每个问题,并且结果可能更容易处理,并且真正满足您的要求。
如果速度是至关重要的真正的,为什么在那里添加一个额外的约束和说,“哦,这只是一个本质,只要我得到使用Ruby。”
最初我使用nokogiri做了一些基本的xml解析,但它很慢且不稳定(有时)我切换到feedzirra,不仅有很大的性能提升,也没有错误,它像馅饼一样容易。如下图所示
# fetching a single feed
feed = Feedzirra::Feed.fetch_and_parse("http://feeds.feedburner.com/PaulDixExplainsNothing")
# feed and entries accessors
feed.title # => "Paul Dix Explains Nothing"
feed.url # => "http://www.pauldix.net"
feed.feed_url # => "http://feeds.feedburner.com/PaulDixExplainsNothing"
feed.etag # => "GunxqnEP4NeYhrqq9TyVKTuDnh0"
feed.last_modified # => Sat Jan 31 17:58:16 -0500 2009 # it's a Time object
entry = feed.entries.first
entry.title # => "Ruby Http Client Library Performance"
entry.url # => "http://www.pauldix.net/2009/01/ruby-http-client-library-performance.html"
entry.author # => "Paul Dix"
entry.summary # => "..."
entry.content # => "..."
entry.published # => Thu Jan 29 17:00:19 UTC 2009 # it's a Time object
entry.categories # => ["...", "..."]
例子,如果你想用饲料做多,例如把它们解析,以下就足够了
source = Feedzirra::Feed.fetch_and_parse(http://www.feed-url-you-want-to-play-with.com)
puts "Parsing Downloaded XML....\n\n\n"
source.entries.each do |entry|
begin
puts "#{entry.summary} \n\n"
cleanURL = (entry.url).gsub("+","%2B") #my own sanitization process, ignore
scrapArticleWithURL(cleanURL)
rescue
puts "(****)there has been an error fetching (#{entry.title}) \n\n"
end
- 1. 提高Ruby on Rails性能Windows 7
- 2. 使用Ruby on Rails擦拭高性能屏幕!
- 3. 使用Ruby on Rails进行Hashtag筛选
- 4. ruby on rails 3 - 使用gems进行高级搜索
- 5. 用Ruby on Rails解析JSON提要
- 6. 使用C++进行高性能的XML解析
- 7. Ruby on rails字符串解析
- 8. Ruby on Rails 3时间 - 解析毫秒
- 9. 用Ruby on Rails进行查询
- 10. Ruby on Rails解密
- 11. 在Ruby on Rails应用程序中使用MySQL视图以提高性能
- 12. Ruby on Rails:高级搜索
- 13. 使用Ruby on Rails解析电子邮件正文
- 14. 解析Ruby on Rails参数(使用#而不是?)
- 15. 提高XML解析性能
- 16. Ruby on Rails中的MySQL性能
- 17. ARM上的Ruby on Rails性能
- 18. 如何解析on Rails的
- 19. XmlSimple - 使用xml_in()来解析on Rails的
- 20. Ruby on Rails进度条
- 21. 使用Ruby on Rails进行应用程序开发
- 22. Ruby on Rails解密mcrypt_decrypt
- 23. Ruby on Rails。了解循环
- 24. Ruby on Rails并发性
- 25. 如何通过Ruby on Rails中的属性进行过滤?
- 26. Ruby on Rails的使用
- 27. Ruby on Rails的 - 使用AJAX
- 28. Ruby on Rails - 使用时间
- 29. 使用Ruby on Rails进行语义Web开发
- 30. 使用Ruby on Rails在Web中进行签名捕获
角度来说,Hpricot是一种HTML解析器:( – collimarco 2009-02-14 14:06:37