如果想要在Node.js中分析HTML,应该使用哪个库呢?
突然在nodejs中出现了解析HTML的工作。
经过调查,发现了两个选项:jquery(与网页端的jQuery稍有不同)和cheerio。
1. jQuery – jQuery
主页:https://github.com/UncoolAJ86/node-jquery
安装只需两个命令:
npm install -S ‘jquery@>=2.1’
npm install -S ‘jsdom@latest’
然而,jsdom的安装速度很慢!
> contextify@0.1.8 install /Users/liubin/github/ss4cn/node_modules/jsdom/node_modules/contextify
> node-gyp rebuild
gyp http GET http://nodejs.org/dist/v0.10.26/node-v0.10.26.tar.gz
gyp http 200 http://nodejs.org/dist/v0.10.26/node-v0.10.26.tar.gz
CXX(target) Release/obj.target/contextify/src/contextify.o
SOLINK_MODULE(target) Release/contextify.node
SOLINK_MODULE(target) Release/contextify.node: Finished
jsdom@0.10.6 node_modules/jsdom
需要先下载并构建Node.js本身。
使用的方法也很烦琐。具体请参考原始样本。
文件有缺陷。
2 个欢呼
主页:http://matthewmueller.github.io/cheerio/
安装过程简单而快速
npm install cheerio
有详细的文档提供。使用起来简单。
// from https://github.com/cheeriojs/cheerio
var cheerio = require('cheerio'),
$ = cheerio.load('<h2 class="title">Hello world</h2>');
$('h2.title').text('Hello there!');
$('h2').addClass('welcome');
$.html();
//=> <h2 class="title welcome">Hello there!</h2>
缺点:没有直接从http获取HTML内容的方法。如果使用request包,就必须进行自定义实现。
最后的结果只有一个
我决定开始使用Cheerio。