Node.js上的HTML解析器

时间:2011-11-02 09:16:50

标签: html parsing node.js nokogiri

在nodejs上有类似Ruby的nokogiri吗? 我的意思是用户友好的HTML解析器。

我在Node.js模块页面上看到了一些解析器,但我找不到漂亮而新鲜的东西。

3 个答案:

答案 0 :(得分:427)

如果您想构建DOM,可以使用jsdom

还有cheerio,它有jQuery界面,它比旧版jsdom快很多,虽然现在它们的性能相似。

你可能想看一下htmlparser2,它是一个流式解析器,根据它的基准测试,它似乎比其他的更快,默认情况下没有DOM。它还可以生成DOM,因为它还与创建DOM的处理程序捆绑在一起。这是cheerio使用的解析器。

parse5看起来也是一个很好的解决方案。它相当活跃(自此次更新后最后一次提交后11天),符合WHATWG标准,并在jsdomAngularPolymer中使用。

如果您要解析web scraping的HTML,可以使用YQL。它有一个node module。如果您的HTML来自static网站,我认为YQL是最佳解决方案,因为您依赖的是服务,而不是您自己的代码和处理能力。虽然请注意,如果网站的robot.txt禁止该页面,它将无效.YQL将无法使用它。

如果您尝试抓取的网站是dynamic,那么您应该使用headless browser phantomjs。如果你正在考虑使用phantomjs,还可以查看casperjs。您可以使用SpookyJS从节点控制casperj。

除了幻影之外还有zombiejs。与无法嵌入nodejs的phantomjs不同,zombiejs只是一个节点模块。

后一种解决方案有nettuts+ toturial

答案 1 :(得分:12)

尝试https://github.com/tmpvar/jsdom - 你给它一些HTML,它会给你一个DOM。

答案 2 :(得分:6)

您还可以查看X光片:https://github.com/lapwinglabs/x-ray