老杨(javaer)

  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  0 随笔 :: 4 文章 :: 0 评论 :: 0 Trackbacks
需要安装iconv-lite或iconv模块(后者需要C编译器编译)
var http = require('http'); 
var iconv = require('iconv-lite'); 
var BufferHelper = require('bufferhelper');
function  writeURL(urlPrefix, keyword, count, index){
    var url = urlPrefix+ encodeURIComponent_GBK(keyword);
    http.get(url,function(res){
        console.log("count: "+count+"; index: "+(index+1) + "; keyword: "+keyword);
        var bufferHelper = new BufferHelper();
        res.on('data', function (chunk) {
            bufferHelper.concat(chunk);
        });
        res.on('end',function(){ 
            var html = iconv.decode(bufferHelper.toBuffer(),'GBK');//转为GBK编码
            console.log(html);
        });
    })
}

function encodeURIComponent_GBK(str){
  if(str==null || typeof(str)=='undefined' || str=='') 
    return '';
  var a = str.toString().split('');
  for(var i=0; i<a.length; i++) {
    var ai = a[i];
    if( (ai>='0' && ai<='9') || (ai>='A' && ai<='Z') || (ai>='a' && ai<='z') || ai==='.' || ai==='-' || ai==='_') continue;
    var b = iconv.encode(ai, 'gbk');//转为GBK编码
    var e = ['']; 
    for(var j = 0; j<b.length; j++) 
      e.push( b.toString('hex', j, j+1).toUpperCase() );
    a[i] = e.join('%');
  }
  return a.join('');
}
posted on 2013-08-07 09:37 老杨(javaer) 阅读(400) 评论(0)  编辑  收藏 所属分类: NODE.JS

只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问