http get 得到的数据为gzib格式 如何使用zlib模块进行解压 然后进行处理
#http get 得到的数据为gzib格式 如何使用zlib模块进行解压 然后进行相关处理
13 回复
你发送请求时,不要带请求压缩的头,返回就不是gzip了,去掉如下的请求头
Accept-Encoding:gzip, deflate, sdch
@DoubleSpout 设置为空也是返回gzip
一般gzib
的需要gzib
的来解.
@DoubleSpout 估计是服务端不管三七二十一都gzip返回 发自 CNodeJs ionic
现在的 urllib 相关库不都自动解压的吗?
@alsotang 不提供自动解压开始我还以为是数据乱码,后来发现是gzip格式 数据API地址 http://esf.wuhan.fang.com/EsfMap/Interfaces/getHouseData.aspx zlib模块可以实现解压 但是还不会使用
@lzxue 用 superagent 这个库
var superagent = require('superagent');
var url = 'http://esf.wuhan.fang.com/EsfMap/Interfaces/getHouseData.aspx';
superagent.get(url).end(function (err, res) {
console.log(res.text)
})
@alsotang superagent 库确实简单,自动解压
找了个解压的库 gzip-buffer (GZips and GUnzips via a buffer rather than a stream)
function handler(responder) {
var bufferHelper = new BufferHelper();
responder.on("data",function(chunk){
bufferHelper.concat(chunk);
})
responder.on("end",function(){
gbuf.gunzip(bufferHelper.toBuffer(), function(unzipped){
var html=iconv.decode(unzipped, 'gb2312');
var json=JSON.parse(html);
console.log(json);
})
})
}
@fengmk2 那就没办法了~不遵守协议
zlib.gunzip(data, function(err, 'gzip') {
});
@hades 测试这个方法了,没解开
昨天写爬虫时遇到这个坑了,无论怎么处理都是乱码,刚刚才发现时这个影响的,request headers里去掉这个就不是乱码了,害我因为这个问昨晚没睡好