zoukankan      html  css  js  c++  java
  • 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&degreefrom=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

  • 相关阅读:
    干货 | 日均流量200亿,携程高性能全异步网关实践 https://mp.weixin.qq.com/s/JdbPf_H4pn5PnPH2LIKQlw
    go获取机器的mac地址和ip
    扫清障碍和风险
    如何优雅地记录操作日志
    WebSocket 基础与应用系列(一
    pytest测试框架
    两个循环依赖的类中都有@Async 报错问题
    jvm 分析常用笔记
    Qt5.2~5.8下载地址
    windows的bat脚本中文乱码或者文件中文乱码
  • 原文地址:https://www.cnblogs.com/Mrrabbit/p/8698332.html
Copyright © 2011-2022 走看看