在 Node.js 上解析 HTML 的最佳实践

如果希望构建 DOM,可以用 jsdom

还有 cheerio,它有 jQuery 接口,比老版本的 jsdom 速度快许多,尽管目前它们在表现上已经基本相似了。

也可以看看 htmlparser2,流解析,以它的标准来看,好像是比其它库都要快,默认是不支持 DOM 的。它也可以构建 DOM,因为它也绑定了一个创建 DOM 的处理程序,就是 cheerio。

parse5 看起来也是一个不错的方案。它相当活跃(这次更新的最后一次 commit 是 11 天前),符合 WHATWG 标准,被运用在 jsdom, AngularPolymer 中。

如果你是为了爬网站而解析 HTML 的话,可以用 YQL。这里有一个对应的 node 模块。如果 HTML 来自于一个静态网站,我想 YQL 会是最好的方案,因为你依赖于那个服务,而不是自己的代码和处理性能。不过要注意,如果网站该页面通过 robot.txt 驳回的话就不起作用了,YQL 对这点无能无力。

如果你想爬的网站是动态的,就应该用没有图形界面的浏览器比如 phantomjs。同样也可以看看 casperjs。你可以在 node 中用 SpookyJS 来控制 casperjs。

除了 phantomjs 还有 zombiejs。不同于不能嵌入 nodejs 的 phantomjs,zombiejs 就是一个 node 模块。

如果需要更进一步的解决方案,可以看 nettuts+ 的教程。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容