爬蟲中gbk網頁內容的處理

  有些網站仍在使用GBK編碼,而JS內部字符編碼使用Unicode來表示,node編寫的爬蟲須要作的轉換是GBK->Unicode->utf-8,關於三者關係參考http://www.cnblogs.com/cy163/archive/2007/05/31/766886.htmlhtml

var request = require('request');
var cheerio = require('cheerio');
request('http://www.taobao.com/',function(err,res){
    if(err) throw err;
   var $ = cheerio.load(res.body.toString());
   console.log($('head title').text());  
});

  上例輸出空白,由於某寶網就是使用GBK編碼,而node把GBK的頁面內容看成Unicode編碼,來UTF-8來處理。可使用iconv-lite模塊來處理。node

var request = require('request');
var cheerio = require('cheerio');
var iconv = require('iconv');
request({
    url:'http://www.taobao.com',
    encoding:null//設置抓取頁面時不要對數據作任何轉換
    },function(err,res,body){
    if(err) throw err;
    body = iconv.decode(body.'gbk');//轉換gbk編碼的頁面內容
    var $ = cheerio.load(body);
   console.log($('head title').text());  
});

  也可使用gbk模塊來處理此問題fetch

var cheerio = require('cheerio');
var gbk= require('gbk');
gbk.fetch('http://www.taobao.com/','utf-8').to('string',function(err,res,body){
    if(err) throw err;
    var $ = cheerio.load(body);
   console.log($('head title').text());  
});

  此時打印出了頁面標題。網站

相關文章
相關標籤/搜索