Gem 菜鸟想问一下 nokogiri 和 hpricot 那个好一些

metal · 2012年02月27日 · 最后由 MaFai 回复于 2014年02月17日 · 7189 次阅读

我发现很多人都是用 nokogiri。

nokogiri 速度很快。我现在也在用。网上评论比后者快几倍

Nokogiri 非常靠谱

我也用 nokogiri

各位知道为啥 Nokogiri 官网会被和谐吗?

说句欠揍的话,其实我更喜欢Pythonhttp://www.crummy.com/software/BeautifulSoup/

Nokogiri 的文档太简陋了,而且 search 不喜欢,叫 find 该多好

借着这个帖子,顺便求教下,对于 ajax 动态加载的内容,大家都是怎么抓的?

#5 楼 @rocky 手动触发请求,nokogiri 无法自动触发 ajax 和 js

#4 楼 @camel 可以做一下比较么

#4 楼 @camel 同求。。我也很讨厌处理 js,要自己去看 js 文件然后想办法解析。。各种蛋疼啊。

@rocky @ywencn 不知道你们说的是不是等待页面 ajax 动态执行完成后再抓取呢,我用了一个插件 watir-webdriver,其中的方法 wait_until_present 可以等待某个标签出现。

#8 楼 @ywencn js 这东西根本不用看啊,直接 firebug 监控数据包,然后模拟发包即可。 #7 楼 @hooopo 我以前和同事比过,后来发现他用Beautiful Soup写的代码的确要漂亮些,可能也和我的能力相关吧。

Nokogiri 的用法我推荐三篇非常给力的文章: http://ruby.bastardsbook.com/chapters/html-parsing/ http://ruby.bastardsbook.com/chapters/web-inspecting-traffic/ http://ruby.bastardsbook.com/chapters/web-crawling/

想起几年前,曾经天天要跟 XML 和基于 Soap 的 WebServices 打交道,那个年代 nokogiri 还没有横空出世,手上只有两个选择:hpricot 和 libxml-ruby

libxml-ruby 是对 GNOME Libxml2 XML toolkit 的 Ruby 封装,速度一流,但是 API 语法晦涩,个人很不喜欢用,而且安装的时候需要你先装个 libxml2-dev 的库。

hpricot 是纯 ruby 实现,内部算法基于正则,解析速度也还行,当然没有基于 C 的 libxml-ruby 快,关键是 API 语法非常简洁清晰,所以在性能不是问题的情况下我首选 hpricot。

后来 nokogiri 出来了,我记得当时特意研究了一下 nokogiri 的实现,nokogiri 本质上仍然基于 Gnome 的 Libxml2,但是在 API 设计和语法上充分吸收了 Hpricot 和 XML Builder 的优点,当时甚至还能从源码中找到 XML Builder 和 Hpricot 的 namespace,不过貌似现在已经被移除了。所以本质上说,nokogiri 是基于 C 的并且兼容 Hpricot 的一套优秀的 XML 库,所以除非部署环境不允许,不能允许安装独立第三方库 libxml2-dev 的情况下,首选 Nokogiri。

#10 楼 @camel nokogiri 用 css 选择器和 xpath 解析 dom,已经很优雅了..

@huyong36 恩,我说的就是这个,很有用,谢啦

新手想问一下,肿么解析 xml,再将数据导入到 sqlite 里?

#10 楼 @camel 感谢^1000,这文章太好了,正对口

需要 登录 后方可回复, 如果你还没有账号请 注册新账号