mlz*_*boy 69 python gzip urllib2
我正在使用
data=urllib2.urlopen(url).read()
Run Code Online (Sandbox Code Playgroud)
我想知道:
如何判断URL中的数据是否被gzip压缩?
如果数据被压缩,urllib2会自动解压缩数据吗?数据总是一个字符串吗?
ars*_*ars 146
- 如何判断URL中的数据是否被gzip压缩?
这将检查内容是否经过gzip压缩并解压缩:
from StringIO import StringIO
import gzip
request = urllib2.Request('http://example.com/')
request.add_header('Accept-encoding', 'gzip')
response = urllib2.urlopen(request)
if response.info().get('Content-Encoding') == 'gzip':
buf = StringIO(response.read())
f = gzip.GzipFile(fileobj=buf)
data = f.read()
Run Code Online (Sandbox Code Playgroud)
- 如果数据被压缩,urllib2会自动解压缩数据吗?数据总是一个字符串吗?
不会.urllib2不会自动解压缩数据,因为urllib2没有设置'Accept-Encoding'标头,而是你使用: request.add_header('Accept-Encoding','gzip, deflate')
如果你正在谈论一个简单的.gz文件,不,urllib2将不解码它,你将获得未更改的.gz文件作为输出.
如果您正在讨论使用Content-Encoding: gzip或自动HTTP级别压缩deflate,则必须由客户端使用Accept-Encoding标头有意请求.
urllib2不设置此标头,因此不会压缩它返回的响应.您可以安全地获取资源而无需担心压缩(尽管由于不支持压缩,请求可能需要更长时间).
| 归档时间: |
|
| 查看次数: |
31794 次 |
| 最近记录: |