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

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

我发现很多人都是用nokogiri。

共收到 16 条回复

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,这文章太好了,正对口

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