小编典典

Node.js 上的 HTML 解析器

all

nodejs 上是否有类似 Ruby 的nokogiri的东西?我的意思是一个用户友好的 HTML 解析器。

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


阅读 180

收藏
2022-06-29

共1个答案

小编典典

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

还有Cheerio,它有jQuery界面,比旧版本的
jsdom 快很多,尽管现在它们的性能相似。

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

parse5看起来也是一个不错的解决方案。它相当活跃(自本次更新的最后一次提交以来
11 天),符合
WHATWG,并用于jsdomAngularPolymer

如果您想解析 HTML 以进行网页抓取,您可以使用YQL
1。它有一个节点模块如果您的 HTML 来自静态网站,我认为 YQL
将是最好的解决方案,因为您依赖的是服务,而不是您自己的代码和处理能力。尽管请注意,如果该页面被网站的 robots.txt 禁止,它将无法工作,但 YQL
将无法使用它。

如果您尝试抓取的网站是动态的,那么您应该使用像phantomjs这样的无头浏览器。如果您正在考虑
phantomjs,可以查看casperjs 。您可以使用 SpookyJS
从节点控制casperjs

除了 phantomjs 之外,还有zombiejs。不像 phantomjs 不能嵌入到
nodejs 中,zombiejs 只是一个 node 模块。

后一种解决方案有一个nettuts+ 教程

2022-06-29