node爬虫gbk中文乱码问题
刚入坑node 写第二个node爬虫时,遇到了这个坑,记录一下。
主要步骤:
1.安装iconv-lite 输入npm install iconv-lite
2.将接收到的网页源码以二进制的方式存储下来,处理二进制数据流使用Buffer全局对象。
3. 然后对这些二进制的数据调用对应的解码程序。iconv-lite模块用于解码。
全部代码:
var http=require('https'); var fs=require('fs'); var cheerio=require('cheerio'); var iconv=require('iconv-lite');//iconv-lite模块用于解码 var request=require('request'); var url='https://search.51job.com/list/030200,000000,0000,00,9,99,web%25E5%2589%258D%25E7%25AB%25AF,2,1.html?lang=c&stype=&postchannel=0000&workyear=99&cotype=99°reefrom=99&jobterm=99&companysize=99&providesalary=99&lonlat=0%2C0&radius=-1&ord_field=0&confirmdate=9&fromType=&dibiaoid=0&address=&line=&specialarea=00&from=&welfare='; function goStart(url){ http.get(url,function(res){ var htmlData=[];//用于接收获取到的网页 var htmlDataLength=0; //res.setEncoding('utf-8'); res.on('data',function(chunk){ htmlData.push(chunk); htmlDataLength+=chunk.length; }) res.on('end',function(){ //数据获取完毕后,开始解码 var bufferHtmlData=Buffer.concat(htmlData,htmlDataLength); var decodeHtmlData=iconv.decode(bufferHtmlData,'gbk'); var $=cheerio.load(decodeHtmlData,{decodeEntities: false}); $('#resultList .el').each(function(index,item){ if(index!=0){ var name=$(this).children().eq(1).children().eq(0).text(); console.log(name); } }) }) }) } goStart(url);
运行结果(屏幕有点小,图截的不全)
教程参考地址:https://blog.csdn.net/javajiawei/article/details/65935338?utm_source=tuicool&utm_medium=referral