在nodejs上有类似Ruby的nokogiri吗? 我的意思是用户友好的HTML解析器。
我在Node.js模块页面上看到了一些解析器,但我找不到漂亮而新鲜的东西。
答案 0 :(得分:427)
还有cheerio,它有jQuery界面,它比旧版jsdom快很多,虽然现在它们的性能相似。
你可能想看一下htmlparser2,它是一个流式解析器,根据它的基准测试,它似乎比其他的更快,默认情况下没有DOM。它还可以生成DOM,因为它还与创建DOM的处理程序捆绑在一起。这是cheerio使用的解析器。
parse5看起来也是一个很好的解决方案。它相当活跃(自此次更新后最后一次提交后11天),符合WHATWG标准,并在jsdom,Angular和Polymer中使用。
如果您要解析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