nodejs 三种方式爬虫入门总结,
nodejs 爬虫总结
① http.get+cheerio+iconv-lite
这种方式还是比较简单的,容易理解,直接使用http的get方法进行请求url,将得到的内容给cheerio解析,用jquery的方式解析出我们要东西即可。
要点:
得到的结果中文乱码如何解决呢,用iconv-lite模块将得到的内容进行转码即可。
http.get(options,function(result){
var body = [];
result.on('data',function(chunk){
body.push(chunk);
});
result.on('end', function () {
var html = iconv.decode(Buffer.concat(body), 'gb2312'); //注意这里body是数组
var $ = cheerio.load(html);
...
});
});
② request+cheerio+iconv-lite
这种方式在获取内容的方式上与上有些不同,可以直接获取到Buffer类型的数据。然后将得到的内容给cheerio解析,用jquery的方式解析出我们要东西即可。
要点:
结果中文乱码如何解决,用iconv-lite模块将得到的内容进行转码即可。
request(options,function(err,res,body){
if(err)console.log(err);
if(!err&&res.statusCode==200){
var html = iconv.decode(body, 'gb2312'); //这里body是直接拿到的是Buffer类型的数据,可以直接解码。
var $ = cheerio.load(html);
...
}
});
③ superagent+cheerio+superagent-charset
这种方式是比前面两个有较大差别,用了superagent的get方法发起请求,解码的时候用到了superagent-charse,用法还是很简单的,之后再将获取到的内容给cheerio解析,用jquery的方式解析出我们要东西即可。
要点:
结果中文乱码解决用superagent-charset模块进行转码,方式较之上面有点差别。
首先看它的加载方式:
var charset = require("superagent-charset");
var superagent = charset(require("superagent")); //将superagent模块传递给superagent-charset
解码方式:
superagent.get(url)
.charset('gb2312') //用charset方法达到解码效果。
.end(function(err,result){
if(err) console.log(err);
var $ = cheerio.load(result.text);
...
});
总结:三种方式都可以达到我们的目的,前两种容易理解,最后一种解码方式很方便,很顺手。
分享给大家,希望能像帮过我的大佬那样帮到需要的朋友,所有代码均在github上,有兴趣的同学可以上去clone运行。
地址:https://github.com/FantasyGao/About_Node/tree/master/clawer
4 回复
毕竟是新人,如果有什么错误的话麻烦各位指出来,多谢各位,或者大神们有其他方法也希望补充一下,谢谢了。
我觉得是一种方式,用了3个不同的module而已。
mark — From LBRC
@xiashulin 嗯 都是一个原理。