nodejs 上是否有类似 Ruby 的 nokogiri 的东西?我的意思是一个用户友好的 HTML 解析器。 我在 Node.js 模块页面上看到了一些解析器,但我找不到漂亮和新鲜的东西。 原文由 asci 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果你想构建 DOM ,你可以使用 jsdom 。 还有 cheerio ,它有 jQuery 界面并且比旧版本的jsdom 快很多,尽管现在它们的性能相似。 您可能想看看 htmlparser2 ,它是一个流式解析器,根据它的基准,它似乎比其他解析器更快,并且默认情况下没有 DOM。它还可以生成 DOM,因为它还与创建 DOM 的处理程序捆绑在一起。这是cheerio 使用的解析器。 parse5 看起来也是一个不错的解决方案。它相当活跃(自本次更新的最后一次提交以来 11 天),符合 WHATWG,并在 jsdom 、 Angular 和 Polymer 中使用。 如果您尝试抓取的网站是 动态 的,那么您应该使用像 phantomjs 这样的 无头浏览器。如果您正在考虑 phantomjs ,还可以查看 casperjs 。您可以使用 SpookyJS 从节点控制 casperjs 。 除了 phantomjs 之外,还有 zombiejs 。不像 phantomjs 不能嵌入到 nodejs 中,zombiejs 只是一个 node 模块。 后一种解决方案有一个 nettuts+ 教程。 原文由 Farid Nouri Neshat 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果你想构建 DOM ,你可以使用 jsdom 。
还有 cheerio ,它有 jQuery 界面并且比旧版本的jsdom 快很多,尽管现在它们的性能相似。
您可能想看看 htmlparser2 ,它是一个流式解析器,根据它的基准,它似乎比其他解析器更快,并且默认情况下没有 DOM。它还可以生成 DOM,因为它还与创建 DOM 的处理程序捆绑在一起。这是cheerio 使用的解析器。
parse5 看起来也是一个不错的解决方案。它相当活跃(自本次更新的最后一次提交以来 11 天),符合 WHATWG,并在 jsdom 、 Angular 和 Polymer 中使用。
如果您尝试抓取的网站是 动态 的,那么您应该使用像 phantomjs 这样的 无头浏览器。如果您正在考虑 phantomjs ,还可以查看 casperjs 。您可以使用 SpookyJS 从节点控制 casperjs 。
除了 phantomjs 之外,还有 zombiejs 。不像 phantomjs 不能嵌入到 nodejs 中,zombiejs 只是一个 node 模块。
后一种解决方案有一个 nettuts+ 教程。