nodejs 上是否有类似 Ruby 的nokogiri的东西?我的意思是一个用户友好的 HTML 解析器。
我在 Node.js 模块页面上看到了一些解析器,但我找不到漂亮和新鲜的东西。
如果你想构建DOM,你可以使用jsdom。
还有Cheerio,它有jQuery界面,比旧版本的 jsdom 快很多,尽管现在它们的性能相似。
您可能想看看htmlparser2,它是一个流式解析器,根据它的基准,它似乎比其他解析器更快,并且默认情况下没有 DOM。它还可以生成 DOM,因为它还与创建 DOM 的处理程序捆绑在一起。这是cheerio 使用的解析器。
parse5看起来也是一个不错的解决方案。它相当活跃(自本次更新的最后一次提交以来 11 天),符合 WHATWG,并用于jsdom、Angular和Polymer。
如果您想解析 HTML 以进行网页抓取,您可以使用YQL 1。它有一个节点模块。如果您的 HTML 来自静态网站,我认为 YQL 将是最好的解决方案,因为您依赖的是服务,而不是您自己的代码和处理能力。尽管请注意,如果该页面被网站的 robots.txt 禁止,它将无法工作,但 YQL 将无法使用它。
如果您尝试抓取的网站是动态的,那么您应该使用像phantomjs这样的无头浏览器。如果您正在考虑 phantomjs,还可以查看casperjs 。您可以使用 SpookyJS 从节点控制casperjs。
除了 phantomjs 之外,还有zombiejs。不像 phantomjs 不能嵌入到 nodejs 中,zombiejs 只是一个 node 模块。
后一种解决方案有一个nettuts+ 教程。