还有 cheerio,它有 jQuery 接口,比老版本的 jsdom 速度快许多,尽管目前它们在表现上已经基本相似了。
也可以看看 htmlparser2,流解析,以它的标准来看,好像是比其它库都要快,默认是不支持 DOM 的。它也可以构建 DOM,因为它也绑定了一个创建 DOM 的处理程序,就是 cheerio。
parse5 看起来也是一个不错的方案。它相当活跃(这次更新的最后一次 commit 是 11 天前),符合 WHATWG 标准,被运用在 jsdom, Angular 和 Polymer 中。
如果你是为了爬网站而解析 HTML 的话,可以用 YQL。这里有一个对应的 node 模块。如果 HTML 来自于一个静态网站,我想 YQL 会是最好的方案,因为你依赖于那个服务,而不是自己的代码和处理性能。不过要注意,如果网站该页面通过 robot.txt 驳回的话就不起作用了,YQL 对这点无能无力。
如果你想爬的网站是动态的,就应该用没有图形界面的浏览器比如 phantomjs。同样也可以看看 casperjs。你可以在 node 中用 SpookyJS 来控制 casperjs。
除了 phantomjs 还有 zombiejs。不同于不能嵌入 nodejs 的 phantomjs,zombiejs 就是一个 node 模块。
如果需要更进一步的解决方案,可以看 nettuts+ 的教程。
网友评论