java deflate_[Java]关于Deflate、GZip格式网页的解压

这其实是非常基础的一篇文章,写作缘由是最近发现自己写的spider爬部分deflate网站乱码。

当你发现URLConnection返回的OutputStream通过Reader读出的是乱码(处理过编码),那么这篇文章非常适合你。

事实上,这些网站为了访问速度,将数据进行了压缩。其实一般的网站是不会如此直接强硬的,在请求的header中若没有Accept-Encoding,就不会返回压缩过的数据。但是部分网站鸟都不鸟……那就需要我们的解压了。

Gzip的解压

OutputStream out = urlConnection.getOutputStream();

out = new BufferedOutputStream(out); // 缓冲

out = new GZIPOutputStream(out); // 解压数据

因为x-gzip非常常见,所以真的超级简单有木有?!只要一个流就OK了。

Deflate

其实也是一个Stream就解决~OutputStream out = urlConnection.getOutputStream();

out = new BufferedOutputStream(out); // 缓冲

out = new InflaterOutputStream(out); // 解压数据

但是但是,你却发现有些网站解压时报错:

java.util.zip.ZipException: Wrong Header

啥?!头部错误?!实际上是这样子的,deflate的数据应该有个zlib头,但是这个服务器并没有提供,自然报错。解决方

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值