nodejs如何爬取数据+图片
nodejs爬取数据
当我们在做一些网站的时候,就需要用到一些数据,但是网上有,一点点的复制又比较麻烦,这是我们的nodejs就可以帮我们完成想要的数据
废话就不多说了,我直接上你们想要的
今天工作不是太忙就爬取了一个天气的网站
效果图
首先我们需要引入一些需要的核心模块
//引入核心模块
var http = require("http");
var fs = require("fs");
var cheerio = require("cheerio");
接下来我们需要想要爬取的网站的网址
const news = "http://www.weather.com.cn/weather/101010100.shtml";
下面我们创建服务,用来接收数据和数据本地存储
//创建服务
var strHtml = "";
var results = [];
http.get(news,(res)=>{
//触发接收事件data
res.on("data",(chunk)=>{
//接收数据,将数据一点点的追加到没我们定义的空字符串中
strHtml+=chunk;
});
//触发接收完成时间end
res.on("end",()=>{
//cheerio类似于jQuery我们在用他之前必须载入文档用(load方法)
var $ = cheerio.load(strHtml);
var menew = [];
//遍历查出来的文本数据
$("#7d li").each((index,item)=>{
//定义一个空数组,将数据内容存在里面
menew.push({id:index,text:$(item).text()});
});
//转换JSON字符串
var res = JSON.stringify(menew);
//储存到本地
fs.writeFile("./data1.json",res,(err)=>{
if(!err) console.log("成功写入");
})
});
});
nodejs爬取图片
这是前几天爬取的百度图片首页的几张图
效果图
首先我们也需要引入一些需要的核心模块
//引入核心模块
var http = require("http");
var https = require("https");
var fs = require("fs");
var cheerio = require("cheerio");
接下来我们需要想要爬取的网站的网址
const news = "http://image.baidu.com/";
首先我们需要将图片的URL地址获取下来
//创建服务
http.get(imgurl,(res)=>{
//触发接收事件data
var imageData = "";
res.on("data",(chunk)=>{
//接收数据,将数据一点点的追加到没我们定义的空字符串中
imageData+=chunk;
});
//触发接收完成时间end
res.on("end",()=>{
//cheerio类似于jQuery我们在用他之前必须载入文档用(load方法)
var $ = cheerio.load(imageData);
var ImgData = [];
//遍历查出来的文本数据
$(".img_pic_wrap_layer img").each((index,item)=>{
//定义一个空数组,将数据内容存在里面
ImgData.push($(item).attr("src"));
});
//循环调用图片函数
for(var i =0 ; i < ImgData.length ; i ++){
saveImage(ImgData[i]);
}
});
});
然后我们要根据图片URL地址保存成图片,我将它封装了一个函数
//封装图片函数
function saveImage(imageUrl){
//创建服务
https.get(imageUrl,(res)=>{
//二进制
res.setEncoding("binary");
var imageData="";
//将图片加载到内存中
res.on("data",(shuju)=>{
imageData+=shuju;
});
//加载完保存图片
res.on("end",()=>{
//创建文件夹,如果有择不创建
if(!fs.existsSync("./img")){
fs.mkdirSync("./img");
};
//保存图片
fs.writeFile("img/"+Math.random()+'.png',imageData,"binary",(err)=>{
if(err) throw err;
console.log("保存成功!!!")
})
})
})
}
不是太懂的可以去GitHub上面看源码
源码地址
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。