zoukankan      html  css  js  c++  java
  • 使用cheerio爬数据兼容gbk和utf8

      使用cheerio爬数据的时候,有的页面不是使用utf8编码,而node只能识别utf8的编码,

    因此,不得不将gbk数据转为uft8。

    var http = require('http');
    var iconv = require('iconv-lite');
    var cheerio = require('cheerio');
    var url = require('url');
    
    var html = "";
    var getURL = url.parse('http://bj.soufun.com/');
    var req = http.get(getURL, function(res) {
    res.setEncoding('binary'); //or hex
    res.on('data', function(data) { //加载数据,一般会执行多次
    html += data;
    }).on('end', function() {
    var $ = cheerio.load(res);
    var buf = new Buffer(html, 'binary'); //这一步不可省略
    if(/gbk/i.test($('meta[charset]').attr('charset'))){
    var str = iconv.decode(buf, 'GBK'); //将GBK编码的字符转换成utf8的
    }else{//将utf8编码下的binary字符还原为utf8
    var str = iconv.decode(buf,'UTF8');
    }
    console.log(str);
    })
    }).on('error', function(err) {
    console.log("http get error:", err);
    });

    这样爬下来的数据不管是gbk以及utf8;最后都将爬下来的数据转为utf8

  • 相关阅读:
    Webpack
    django 基础入门(二)
    django 基础入门(一)
    jQuery(二)
    JavaScripts+jquery
    html(第一天,div+css)
    SqlAlchemy ORM
    redis总结
    memcached总结
    Python (九) 协程以及数据库操作
  • 原文地址:https://www.cnblogs.com/lds2014/p/4564009.html
Copyright © 2011-2022 走看看