使用nodejs spider爬取图片及数据实现
作者:Besmall
这篇文章主要为大家介绍了使用nodejs spider爬取图片及数据实现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
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上面看源码
以上就是nodejs_spider爬取图片+数据的详细内容,更多关于nodejs_spider爬取图片+数据的资料请关注脚本之家其它相关文章!