【发布时间】:2011-12-20 03:32:07
【问题描述】:
【问题讨论】:
-
“友好”是什么意思?方便工作和选择节点,比如 Nokogiri 的 XPath 和 CSS 选择器支持?可以解析无效的“标签汤”HTML?
-
如果您对 jQuery 感到满意,请考虑使用 this answer。
标签: html parsing node.js nokogiri
【问题讨论】:
标签: html parsing node.js nokogiri
试试https://github.com/tmpvar/jsdom - 你给它一些HTML,它给你一个DOM。
【讨论】:
还有cheerio,它有jQuery 接口,它比旧版本的jsdom 快很多,尽管现在它们的性能相似。
你可能想看看htmlparser2,它是一个流式解析器,根据它的基准,它似乎比其他的更快,并且默认情况下没有 DOM。它还可以生成 DOM,因为它还与创建 DOM 的处理程序捆绑在一起。这是cheerio使用的解析器。
parse5 看起来也是一个不错的解决方案。它相当活跃(自本次更新的最后一次提交起 11 天),符合 WHATWG,并在 jsdom、Angular 和 Polymer 中使用。
如果你想为web scraping解析HTML,你可以使用YQL1。它有一个node module。如果您的 HTML 来自static 网站,我认为 YQL 将是最好的解决方案,因为您依赖的是服务,而不是您自己的代码和处理能力。虽然请注意,如果该页面被网站的 robots.txt 禁止,它将无法正常工作,但 YQL 将无法使用它。
如果您尝试抓取的网站是dynamic,那么您应该使用headless browser,例如phantomjs。如果您正在考虑使用 phantomjs,还可以查看 casperjs。您可以使用SpookyJS 从节点控制 casperjs。
在 phantomjs 旁边有 zombiejs。与不能嵌入nodejs的phantomjs不同,zombiejs只是一个node模块。
后一种解决方案有一个nettuts+ toturial。
1 自 2014 年 8 月起,YQL 所需的 YUI 库不再积极维护,source
【讨论】:
你也可以看一下X光片:https://github.com/lapwinglabs/x-ray
【讨论】: