当前位置: 首页 > 后端技术 > Node.js

节点爬虫爬取网页的实现

时间:2023-04-03 17:42:15 Node.js

一、前言一直觉得爬虫是一个很高端的东西。在大数据时代,爬虫尤为重要。经过一番摸索,终于用node实现了这个功能,包括对抓取内容的解析。抓在这里主要是为了方便交互,查看效果或者方便非技术人员)服务端index.js代码constKoa=require('koa');constRouter=require('koa-router');//路由常量{greenFmt,green,purple}=require('color7log');//日志工具constapp=newKoa();constrouter=newRouter();//默认页面router.get('/',async(ctx,next)=>{ctx.response.type='html';ctx.response.body=fs.createReadStream('./index.html');});app.use(router.routes())app.listen(3000);green('服务正在运行,端口:3000')nodeindex.js启动服务,就可以访问你的页面了。当然,项目下必须有index.html内容,请自行解决2.核心代码使用nodehttp模块请求一个html页面依赖模块,请安装constcheerio=require('cheerio');constzlib=require('zlib');consticonv=require('iconv-lite');varhttp=require('http')//导入模块varurl='http://kaijiang.500.com/shtml/ssq/03001.shtml'//获取页面源码,调用方法解析输出http.get(url,function(res){varhtml=''vararr=[];varchunks;res.on('data',F函数(数据){arr.push(数据);})res.on('end',function(){chunks=Buffer.concat(arr);chunks=zlib.unzipSync(chunks)//因为页面是gzip如果要解压页面,普通的文本做不需要这个varbody=iconv.decode(chunks,'gbk');//转为可见字符varcheerio=require('cheerio'),//库节点后,用法类似jq很方便最后用来处理各种html模板$=cheerio.load(body);//初始化dom对象letcontent=$(".iSelectLista")letparams=[]for(leti=0;i