node简易爬虫
作者:互联网
1. http模块,网络请求
cheerio库, 将html格式的字符串转成类dom结构,之后可以分析结构,通过jq的语法选中其中的元素。
/* 1. 请求网站数据 2. 将数据保存本地文件 */ let picArr = [] const http=require('https') const fs=require('fs') const cheerio=require('cheerio') //let url='https://www.qunar.com/' let url='https://oasgames.com/pc/zh/home.html' //let url ='http://www.ziroom.com/' let json='http://nodejs.org/dist/index.json' http.get(url,(res)=>{ // 安全判断 const { statusCode } = res; //状态码 const contentType = res.headers['content-type']; //文件类型 //console.log(statusCode,contentType) let err =null; if(statusCode!==200){ err=new Error('请求状态错误') }else if(!/^text\/html/.test(contentType)){ //格式类型是网页 err=new Error('请求类型错误') } if(err){ console.log(err) res.resume(); // 重置缓存 return false } //数据处理 let rawData='' res.on('data',(chunk)=>{ console.log('----') rawData+=chunk.toString('utf8') // console.log(chunk.toString('utf8')) }) // 数据流传输完毕 res.on('end',()=>{ fs.writeFileSync('./bibi.html',rawData) //通过cheerio 分析 let $=cheerio.load(rawData)// 将请求的网页数据进行转化 $('video').each((index,el)=>{ picArr.push({ 'type':'video', "src": $(el).attr('src') }) }) $('img').each((index,el)=>{ picArr.push({ 'type':'img', "src": $(el).attr('src') }) }) console.log('picArr',picArr) fs.writeFileSync('./pic.js',picArr) }) }).on('error',(err)=>{ console.log('请求错误') })
标签:node,console,log,err,res,爬虫,简易,let,picArr 来源: https://www.cnblogs.com/catherLee/p/13093111.html