首页 > 代码库 > Nodejs 爬虫简单编写
Nodejs 爬虫简单编写
nodejs 爬虫原理,先用request请求页面内容,把内容获取到并iconv-lite设置编码格式,再用cheerio进行类似dom操作合并内容,转换写入文件中
1)获取单页面数据:
var fs = require(‘fs‘) var request = require(‘request‘) var iconvLite = require(‘iconv-lite‘) var cheerio = require(‘cheerio‘) //请求 request({ url:‘https://github.com/Zion0707‘, //要抓取的页面 encoding:null },function(err,res,body){ //设置编码格式 var html = iconvLite.decode(body,‘utf8‘) //转换成dom操作 var $ = cheerio.load(html) //类似jq操作 var title = $(‘title‘).text(); var json = { title : title } //转成json字符串对象写入到文件中 var r = JSON.stringify(json) fs.open(‘./data.json‘,‘w‘,function(err,el){ fs.write(el , r ,function(err,suc){ console.log(suc,‘success‘) }) }) })
2)批量获取多页面数据:
var fs = require(‘fs‘) var async = require(‘async‘) var request = require(‘request‘) var iconvLite = require(‘iconv-lite‘) var cheerio = require(‘cheerio‘) //获取更多url组成数组 function getMore(num){ var arr = [] for(var i = 0 ; i < num ; i++ ){ arr.push( ‘http://www.techweb.com.cn/tele/2017-02-23/2491253_‘+(i+1)+‘.shtml‘ ) } return arr; } //异步每一次获取3条,防止ip被封 async.mapLimit( getMore(7) , 3 ,function(url,callback){ request({ url:url, //读取数组里的每一条url encoding:null },function(err,res,body){ var html = iconvLite.decode(body,‘utf8‘) var $ = cheerio.load(html) //获取每一页的一张图片 var result = $(‘img‘).eq(1).attr(‘src‘) //成功之后callback 才能进行下一次获取 callback( null , url+result ) }) },function(err,result){ //返回结果 console.log(result) })
Nodejs 爬虫简单编写
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。