Node.js 上的 HTML 解析器

标签 html parsing node.js nokogiri

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

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

最佳答案

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

还有cheerio ,它有 jQuery接口(interface),它比旧版本的 jsdom 快得多,尽管现在它们的性能相似。

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

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

如果您要抓取的网站是 dynamic那么你应该使用 headless browser喜欢 phantomjs .也看看casperjs ,如果你正在考虑 phantomjs。您可以使用 SpookyJS 从 Node 控制 casperjs .

在 phantomjs 旁边有 zombiejs .与不能嵌入nodejs的phantomjs不同,zombiejs只是一个node模块。

有一个 nettuts+ toturial对于后一种解决方案。

关于Node.js 上的 HTML 解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7977945/

相关文章:

javascript - 将焦点设置到 <select> 元素

html - 如何像图片中那样垂直对齐div

javascript - 不同元素样式的分组变化

parsing - 自然语言处理项目的想法?

javascript - 在express js中下载多个blob?

javascript - 使对象数组成为Node.js中数组中对象的值

html - 由于绝对位置和 0 高度,我的 div 隐藏在其他 div 之下

ios - Swift 4+SwiftyJson 自动从 JSON 转换/生成对象

java - 这个解析器生成器说这个语法不是 LR(1) 但我有疑问

node.js - 如何在 Sequelize 中创建父/子关联?