`
wangwei3
  • 浏览: 121559 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

如何读取gzip压缩网页

阅读更多
最近在抓取搜狐的时候发现下载下来的页面都是乱码,开始以为是解码出了问题可是查找半天无果,很是郁闷。返回的状态码是200,怎么都是乱码呢?难道是页面做了加密?
其实这是搜狐为了加快网页加载速度对页面做了压缩。哎,我out了~~~~

下面来解决这个问题吧~~~
1.如何判断页面是否是压缩的
URLConnection hc = null;
hc.getHeaderField("Content-Encoding") 如果得到的是 gzip则说明页面做了压缩
2.对页面压缩/解压的方法


         /** 
	 * @param source
	 *            源文件
	 * @param target
	 *            目标文件
	 */
	public static void unGZipFile(File source, String target) throws Exception { // 解压文件
		FileInputStream fin = new FileInputStream(source); // 得以文件输入流
		GZIPInputStream gzin = new GZIPInputStream(fin); // 得到压缩输入流
		FileOutputStream fout = new FileOutputStream(target); // 得到文件输出流
		byte[] buf = new byte[1024]; // 缓冲区大小
		int num;
		while ((num = gzin.read(buf, 0, buf.length)) != -1)
		{ // 如果文件未读完
			fout.write(buf, 0, num); // 写入缓冲数据到输出流
		}
		gzin.close(); // 关闭压缩输入流
		fout.close(); // 关闭文件输出流
		fin.close(); // 关闭文件输入流
	}

	/**
	 * gzip压缩文件
	 * 
	 * @param source
	 *            源文件
	 * @param target
	 *            压缩后文件.mms格式
	 * @throws Exception
	 */
	public static void gZipFile(File source, File target) throws Exception {
		FileInputStream fin = new FileInputStream(source);
		BufferedOutputStream out = new BufferedOutputStream(new GZIPOutputStream(
				new FileOutputStream(target)));
		int c = -1;
		while ((c = fin.read()) != -1)
		{
			out.write(c);
		}
		fin.close();
		out.close();
	}


找到原因,问题很容易就被解决了!
0
1
分享到:
评论
1 楼 国仔饼 2011-04-07  
  

相关推荐

    php读取远程gzip压缩网页的方法

    总的来说,处理远程GZIP压缩网页的关键在于识别HTTP响应中的`Content-Encoding: gzip`头部信息,并根据此信息调整数据获取方法,无论是使用`file_get_contents`的特殊前缀、`cURL`的选项,还是自定义的解压函数。...

    易语言源码易语言GZIP解压缩源码.rar

    1. **读取GZIP文件**:首先,你需要使用易语言的文件操作命令读取GZIP文件的内容,通常这会涉及`打开文件`、`读取文件`等命令。 2. **解析GZIP头部信息**:GZIP文件格式有特定的头部结构,包含一些元数据,如时间戳...

    php gzip 压缩js或css

    `Gzip`是一种广泛使用的数据压缩算法,通过在服务器端压缩文件后再传输到浏览器,可以显著减少网络带宽的使用,加快网页加载速度。 首先,我们需要理解`Gzip`的工作原理。`Gzip`基于`DEFLATE`算法,它结合了LZ77...

    php gzip压缩输出的实现方法

    gzip压缩是一种广泛使用的...对于静态内容以及PHP动态页面的压缩,gzip能够有效降低网页的加载时间,提升用户体验,同时也增强了搜索引擎优化(SEO)的效果,因为支持gzip压缩的搜索引擎可以更快地读取和索引网页内容。

    GZip无损压缩算法

    在VB.NET中,GZip压缩和解压缩功能通过`System.IO.Compression`命名空间下的`GZipStream`类来实现。以下是对给定代码片段的详细分析: 1. **压缩文件功能:** - 首先检查源文件是否存在,如果不存在,则抛出`...

    文件Gzip解压缩,vs

    总之,理解Gzip压缩和解压缩的过程对于IT从业者至关重要,特别是在网络数据处理、文件存储和传输等领域。通过使用如zlib这样的库,并结合Visual Studio的开发环境,可以方便地实现Gzip文件的压缩和解压缩功能。在...

    前端gzip 解压缩pako.min.js文件

    1. **获取GZIP压缩数据**:前端通常通过Ajax请求从服务器获取到GZIP压缩的资源,或者从本地存储(如localStorage)中读取已经压缩的数据。 2. **解压GZIP数据**:导入`pako.min.js`库,然后调用其提供的`pako....

    JAVA GZIP压缩案例附带httpwatch监测工具以及使用说明

    在本文中,我们将深入探讨Java中的GZIP压缩技术,并结合HTTPWatch监测工具,理解其在实际网络请求中的应用。GZIP是一种广泛使用的数据压缩格式,它可以在网络传输中有效地减小文件大小,从而提高加载速度,减少...

    gziptest压缩JS

    当用户请求网页时,服务器会先对资源进行gzip压缩,然后传输压缩后的版本,浏览器接收到后解压并正常执行。这一过程不仅降低了带宽消耗,还减少了用户的等待时间。 "src" 文件夹通常包含源代码文件,这些文件可能...

    使用php判断网页是否gzip压缩

    此外,如果服务器返回的是GBK编码的GZIP压缩网页,还需要使用`iconv`函数将其转换为UTF-8编码,以避免乱码问题。 除了这种方法,还可以利用PHP的`ob_start`函数以及其相关函数(如`ob_gzhandler`)来处理GZIP压缩的...

    前端pako压缩与解压缩

    在前端,这两个概念通常与HTTP压缩有关,服务器可以自动对发送到浏览器的内容进行Gzip压缩,以减少网络传输的数据量。 Pako库是一个纯JavaScript编写的实现,它提供了与C/C++版本的zlib库类似的接口,支持Gzip和...

    关于HTTP传输中gzip压缩的秘密探索分析

    例如 Google就可以通过直接读取gzip文件来比普通手工抓取更快地检索网页。在Google网站管理员工具(Google Webmaster Tools)中你可以看到,sitemap.xml.gz 是直接作为Sitemap被提交的。 而这些好处并不仅仅限于...

    javascript的gzip静态解压

    - 接着,获取到GZIP压缩的数据,可能是通过Ajax请求或者从本地存储中读取。 - 使用`pako.inflate()`方法解压数据,例如:`var decompressedData = pako.inflate(gzippedData, { to: 'string' });` 这将返回解压后...

    gzip-1.9.zip

    8. **在HTTP中的应用**:HTTP协议支持gzip压缩,服务器可以通过发送gzipped内容来减少网络传输的数据量,提高网页加载速度。 9. **压缩比比较**:虽然gzip在许多情况下提供了良好的压缩率,但与其他压缩工具(如...

    易语言空空网页压缩机源码

    在易语言中实现GZIP压缩,需要理解GZIP的编码格式并调用相应的压缩库。 3. **Brotli压缩**:Brotli是Google开发的一种新型压缩算法,相比GZIP,它在某些场景下能提供更好的压缩比,但支持度相对较低。如果易语言...

    Nginx使用Gzip算法对报文进行压缩详解

    在Nginx中,Gzip压缩可以通过配置不同的指令来实现,其中包括开启或关闭Gzip压缩功能、设置压缩级别、缓冲区大小等。 通过Nginx的gzip模块,我们可以轻松地启用Gzip压缩功能。该模块提供了多个配置指令,其中: 1....

    Delphi的GZIP解压示例源代码(亲测可用)

    通常,这会涉及到读取GZIP文件,调用解压缩函数,将解压缩的数据写入新的文件,以及处理可能出现的错误。 通过阅读和理解源代码,你可以学习到如何处理二进制数据流,如何使用Delphi的内存流类(如TMemoryStream)...

    apache启用gzip压缩的实现方法

    利用Apache中的Gzip模块,我们可以使用Gzip压缩算法来对Apache服务器发布的网页内容进行压缩后再传输到客户端浏览器。这样经过压缩后实际上降低了网络传输的字节数,最明显的好处就是可以加快网页加载的速度。 网页...

Global site tag (gtag.js) - Google Analytics