Python下载文件时出现乱码的解决方法之一:Content-Encoding: gzip
来源:互联网 发布:mac pro 新建文件夹 编辑:程序博客网 时间:2024/06/03 21:41
之前写过一个简单的爬虫程序,这次想试着再写一个下载固定文件的爬虫程序。
写完之后发现下载的文件,有些是可以正常打开的,而有些是提示了编码错误,用wireshark抓包,过滤出http的包,发现wireshark上显示的数据是没错的。然后又详细看了http数据包的内容。发现有一个"Content-Encoding: gzip"的项,根据之前写爬虫程序时看的教程,大概知道应该是数据被压缩的,所以之前保存的内容是压缩后的数据,导致读取失败。
上网搜索了一下,可以使用gzip库来对数据进行解压缩,代码如下:
req = urllib2.Request(url)try:response = urllib2.urlopen(req)data = response.read()except:returnheaders = response.info()if 'Content-Encoding' in headers and 'gzip' == headers['Content-Encoding']:import gzip, StringIOdata = StringIO.StringIO(data)gz = gzip.GzipFile(fileobj = data)data = gz.read()gz.close()
按照上面解压缩后,在保存为对应格式的文件,就可以正常打开了。不过上面只判断了一种类型。
代码中的StringIO用于在内存缓冲区中读写数据。
在搜索解决方法的时候,发现一篇文章,说到gzip是用来压缩与解压缩文件,而zlib是压缩与解压缩数据的。不过没有深入去看,先留着,说不定以后可以用到。文章链接为:http://www.crifan.com/compress_html_in_urllib2_open_then_decompress_returned_gzip_data_in_python/
0 0
- Python下载文件时出现乱码的解决方法之一:Content-Encoding: gzip
- python urllib2遇到Content-Encoding=gzip解码为乱码的解决方案
- struts2实现文件下载所出现的乱码,解决方法
- http: 支持 Content-Encoding: gzip
- php 文件下载 出现下载文件内容乱码损坏的解决方法
- php 文件下载 出现下载文件内容乱码损坏的解决方法
- JavaEE_Web文件下载_lesson2_ JavaEE下载文件,中文乱码解决方法(Content-Disposition)
- tomcat和nginx设置content-Encoding:gzip
- FCKeditor 2.3中文文件上传时出现乱码的解决方法
- 文件下载中文件名乱码的解决方法
- FTP4j下载带有中文的文件时 出现乱码解决方案
- 正确处理下载文件时中文文件名乱码的问题(Content-Disposition)
- 下载文件时出现保存对话框乱码
- struts2下载文件时出现乱码问题
- httpclient访问网站时设置Accept-Encoding为gzip,deflate返回的结果为乱码的问题
- 下载cab,sis,sisx等软件包出现乱码的解决方法
- 下载cab,sis,sisx等软件包出现乱码的解决方法
- 使用PHP下载Excel时会出现乱码的解决方法
- 2087 剪花布条【kmp】
- JSP-- cookies
- 语音特征参数MFCC提取过程详解
- 递归算法实例讲解
- 网络请求数据 POST 方法
- Python下载文件时出现乱码的解决方法之一:Content-Encoding: gzip
- CentOS 7 挂载本地光盘作为镜像源
- c语言指针与数组
- 【Linux】【C/C++】多进程协同词频统计
- 几种流行Webservice框架性能对比
- hadoop学习之路——12、win7下eclipse连接hadoop测试环境
- 稀疏编码
- 什么是汉明窗?加Hanmming窗的作用?
- 最大子列和问题