当前位置: 首页 > 面试题库 >

Node.js上的HTML解析器

壤驷喜
2023-03-14
问题内容

在nodejs上有像Ruby的nokogiri这样的东西吗?我的意思是用户友好的HTML解析器。

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


问题答案:

如果要构建DOM,可以使用jsdom。

还有cheerio,它具有jQuery接口,并且比旧版本的jsdom快很多,尽管如今它们的性能相似。

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

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

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

如果您要抓取的网站是动态的,那么您应该使用无头浏览器,例如phantomjs。也看看casperjs,如果你正在考虑phantomjs。您可以使用SpookyJS从node控制casperjs。

在phantomjs旁边有zombiejs。与无法嵌入到nodejs中的phantomjs不同,zombiejs只是一个节点模块。

后一种解决方案有一个nettuts + turtural。



 类似资料:
  • 问题内容: 谁能推荐C或Objective-C库进行HTML解析?它需要处理无法完全验证的凌乱的HTML代码。 这样的库是否存在,还是我最好只是尝试使用正则表达式? 问题答案: 看起来像是SDK中附带的,并具有以下特征: 该模块使用与XML解析器兼容的API来实现HTML4.0非验证解析器。即使从规范的角度来看严重损坏,它也应该能够解析“真实世界”的HTML。 这听起来像我所需要的,所以我可能会使

  • 问题内容: 我需要解析(服务器端)大量的HTML页面。 我们都同意,regexp不是行之有效的方法。 在我看来,javascript是解析HTML页面的本机方式,但是这种假设取决于服务器端代码,该代码具有javascript在浏览器内部具有的所有DOM功能。 Node.js是否具有内置的功能? 有没有更好的方法来解决此问题,请在服务器端解析HTML? 问题答案: 您可以使用npm模块jsdom和h

  • HTML5 Boilerplate 默认提供两个 html 页面: index.html 404.html index.html no-js类 no-js 类可以让开发者依据 JavaScript 被启用(.js)或被禁止(.no-js)两种状态,更轻易准确地添加自定义样式。 使用这个技巧也有助于避免浏览器闪烁(FOUC)。 lang 属性 请认真考虑在 <html> 中添加 lang 属性,从而

  • 问题内容: 以下代码在Windows下的node.js中产生异常: 这是消息: 当我删除时,它工作正常。是什么原因造成的?我尝试关闭防火墙,但没有任何效果。 问题答案: node.js使用c-ares解析器,并且完全忽略系统解析器。因此,有关C:\ WINDOWS \ system32 \ drivers \ etc \ hosts的建议可能无关紧要。 c-ares库读取某些系统配置文件-例如,在

  • 问题内容: 什么HTML解析器具有以下功能: 快速 线程安全 可靠且无错误 解析HTML和XML 处理错误的HTML 有一个DOM实现 支持HTML4,JavaScript和CSS标签 相对简单的面向对象的API 您认为哪种解析器更好? 谢谢。 问题答案: ApacheTika是最佳选择。Apache最近从现有项目中提取了许多子项目并将其公开。提卡(Tika)是其中之一,以前是Apache Luc

  • 问题内容: 我正在开发一个从网站上抓取数据的应用程序,我想知道应该如何获取数据。具体来说,我需要包含在使用特定CSS类的许多div标签中的数据-目前(出于测试目的)我只是在检查 在HTML的每一行中-都可以,但是我不禁感到有更好的解决方案。 有什么好方法可以给类添加一行HTML并提供一些好方法,例如: 问题答案: “ JTidy是HTML Tidy的Java端口,HTML Tidy是HTML语法检