CNode

http get 得到的数据为gzib格式 如何使用zlib模块进行解压 然后进行处理

问答
Llzxue发布于12 年前最后回复11 年前13 回复8533 浏览0 收藏

#http get 得到的数据为gzib格式 如何使用zlib模块进行解压 然后进行相关处理

查看回复

回复 (13)

D
DoubleSpout#1·12 年前

你发送请求时,不要带请求压缩的头,返回就不是gzip了,去掉如下的请求头

Accept-Encoding:gzip, deflate, sdch
M
meteormatt#3·12 年前

一般gzib 的需要gzib的来解.

F
fengmk2#4·12 年前
A
alsotang#5·12 年前

现在的 urllib 相关库不都自动解压的吗?

L
lzxue#6·12 年前
引用 alsotang现在的 urllib 相关库不都自动解压的吗?

@alsotang 不提供自动解压开始我还以为是数据乱码,后来发现是gzip格式 数据API地址 http://esf.wuhan.fang.com/EsfMap/Interfaces/getHouseData.aspx zlib模块可以实现解压 但是还不会使用

A
alsotang#7·12 年前
引用 lzxue@alsotang 不提供自动解压开始我还以为是数据乱码,后来发现是gzip格式 数据API地址 http://esf.wuhan.fang.com/EsfMap/Interfaces/get...

@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)
})

顺便看这里学爬虫:https://github.com/alsotang/node-lessons

L
lzxue#8·12 年前
引用 alsotang@lzxue 用 superagent 这个库 顺便看这里学爬虫:https://github.com/alsotang/node lessons

@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);
	
    })
   })
}
H
hades#10·12 年前
    zlib.gunzip(data, function(err, 'gzip') {
    });
L
lzxue#11·12 年前
引用 hadeszlib.gunzip(data, function(err, 'gzip') { });

@hades 测试这个方法了,没解开

H
hades#12·12 年前
引用 lzxue@hades 测试这个方法了,没解开

@lzxue @.@p 不科学你确定是gzip还是inflat,我一直用着好好的。

A
Attax#13·11 年前

昨天写爬虫时遇到这个坑了,无论怎么处理都是乱码,刚刚才发现时这个影响的,request headers里去掉这个就不是乱码了,害我因为这个问昨晚没睡好

参与回复
登录后即可参与回复。登录