nodejs上是否有类似Ruby的nokogiri? 我的意思是一个用户友好的HTML解析器。Node.js上的HTML解析器
我在Node.js模块页面看到了一些解析器,但我找不到一些漂亮和新鲜的东西。
nodejs上是否有类似Ruby的nokogiri? 我的意思是一个用户友好的HTML解析器。Node.js上的HTML解析器
我在Node.js模块页面看到了一些解析器,但我找不到一些漂亮和新鲜的东西。
还有cheerio,它有jQuery接口,它比老版本的jsdom快很多,尽管现在它们在性能上差不多。
您可能想看看htmlparser2,它是一个流式解析器,根据其基准测试,它似乎比其他测试更快,并且默认情况下没有DOM。它也可以生成一个DOM,因为它也绑定了一个创建DOM的处理程序。这是cheerio使用的解析器。
parse5也看起来像一个很好的解决方案。它非常活跃(自上次提交此更新以来已有11天),符合WHATWG标准,用于jsdom,Angular和Polymer。
如果你想解析HTML为web scraping,你可以使用YQL。有一个node module它。 YQL我认为如果你的HTML来自static网站,这将是最好的解决方案,因为你依赖的是服务,而不是你自己的代码和处理能力。虽然请注意,如果网页的robot.txt不允许网页,YQL将无法使用。
如果您要搜索的网站是dynamic,那么您应该使用headless browser,比如phantomjs。如果你正在考虑phantomjs,也请看casperjs。你可以用节点SpookyJS控制casperjs。
除了phantomjs,还有zombiejs。与不能嵌入到nodej中的phantomjs不同,zombiejs只是一个节点模块。
后面的解决方案有nettuts+ toturial。
非常完整的答案。不错的工作。 –
您可以使用DomHandler模块(与htmlparser2捆绑)从htmlparser2获取DOM。它们被有意地分开以允许其他类型的处理HTML而不用创建DOM的开销。 – esp
@esp谢谢,在我认为它是非标准DOM之前,我相应地更改了该部分。 –
尝试https://github.com/tmpvar/jsdom - 你给它一些HTML,它给你一个DOM。
您还可以看看X射线:https://github.com/lapwinglabs/x-ray
你所说的“友好”是什么意思?方便的工作和选择节点,像Nokogiri的XPath和CSS选择器支持?可以解析无效的“标签汤”HTML吗? – Phrogz
如果您对jQuery感到满意,请考虑[此答案](http://stackoverflow.com/a/31361044/778272)。 –
你们为什么总是把所有事情都评定为脱离主题或者不可接受?这是一个真正的人,有一个合法的问题。你只需要继续并关闭它。它会让你感觉重要吗? –