node.js爬取数据
node可以做很多事情,比如爬虫、通信等等。 今天就先做一个爬虫,爬取一些百度图片。
首先我们需要引入一些模块
var http = require("http");
var https = require("https");
var fs = require("fs");
var cheerio = require("cheerio");
这里需要注意cheerio是扩展模块需要装一下
npm install cheerio --save
然后要把这些图片的url地址获取下来
const wz="http://image.baidu.com/";
var strHtml="";
var resuts=[];//定义一个空数组,将数据内容存在里面
http.get(wz,function(res){
//接收数据
res.on("data",function(data){
strHtml+=data;
});
//接收完成
res.on("end",function(){
var $=cheerio.load(strHtml);
//找到这些图片的位置
$(".img_single_box img").each(function(index,item){
resuts.push($(item).attr('src'))
});
console.log(resuts);
//循环调用图片函数
for(var i=0;i<resuts.length;i++){
saveImage(resuts[i]);
}
});
});
然后根据图片URL地址保存成图片
function saveImage(resuts){
https.get(resuts,function(res){
res.setEncoding('binary');//二进制
var imageData="";//将图片加载到内存中
res.on("data",function(a){
imageData+=a;
}).on("end",function(){
//创建文件夹,如果有就不用创建
if(!fs.existsSync('./images')){
fs.mkdirSync('./images');
};
//保存图片
fs.writeFile(".images/"+Math.random()+".png",imageData,"binary",function(err){
if(!err)
console.log("保存成功");
});
});
});
}