千家信息网

python如何实现gzip/deflate支持

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍python如何实现gzip/deflate支持,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!gzip/deflate支持现在的网页普遍支持gzip压缩,这往往
千家信息网最后更新 2026年11月02日python如何实现gzip/deflate支持

这篇文章主要介绍python如何实现gzip/deflate支持,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

gzip/deflate支持

现在的网页普遍支持gzip压缩,这往往可以解决大量传输时间,以VeryCD的主页为例,未压缩版本247K,压缩了以后45K,为原来的1/5。这就意味着抓取速度会快5倍。

然而python的urllib/urllib2默认都不支持压缩,要返回压缩格式,必须在request的header里面写明'accept-encoding',然后读取response后更要检查header查看是否有'content-encoding'一项来判断是否需要解码,很繁琐琐碎。如何让urllib2自动支持gzip, defalte呢?

其实可以继承BaseHanlder类,然后build_opener的方式来处理:

import urllib2from gzip import GzipFilefrom StringIO import StringIOclass ContentEncodingProcessor(urllib2.BaseHandler):  """A handler to add gzip capabilities to urllib2 requests """  # add headers to requests  def http_request(self, req):    req.add_header("Accept-Encoding", "gzip, deflate")    return req  # decode  def http_response(self, req, resp):    old_resp = resp    # gzip    if resp.headers.get("content-encoding") == "gzip":        gz = GzipFile(                    fileobj=StringIO(resp.read()),                    mode="r"                  )        resp = urllib2.addinfourl(gz, old_resp.headers, old_resp.url, old_resp.code)        resp.msg = old_resp.msg    # deflate    if resp.headers.get("content-encoding") == "deflate":        gz = StringIO( deflate(resp.read()) )        resp = urllib2.addinfourl(gz, old_resp.headers, old_resp.url, old_resp.code)  # 'class to add info() and        resp.msg = old_resp.msg    return resp# deflate supportimport zlibdef deflate(data):  # zlib only provides the zlib compress format, not the deflate format;  try:              # so on top of all there's this workaround:    return zlib.decompress(data, -zlib.MAX_WBITS)  except zlib.error:    return zlib.decompress(data)然后就简单了,encoding_support = ContentEncodingProcessoropener = urllib2.build_opener( encoding_support, urllib2.HTTPHandler )#直接用opener打开网页,如果服务器支持gzip/defalte则自动解压缩content = opener.open(url).read()

以上是"python如何实现gzip/deflate支持"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

支持 内容 篇文章 网页 琐碎 繁琐 主页 价值 兴趣 小伙 小伙伴 意味 方式 时间 更多 服务器 格式 版本 知识 行业 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技海报 互联网科技工作委员会副主任毛军 互联网科技股票 互联网科技排名 互联网科技公司有哪些 西藏七维空间互联网科技有限公司 剑昆互联网络科技有限公司临桂 中化能源互联网科技招聘 受益于互联网科技的高速发展 知域互联网科技有限公司大骗子 互联网科技研发水平 互联网科技人工智能实验室 996高科技互联网公司 恒生互联网科技业指数调整周期 互联网方面的科技前沿 银行科技岗属于互联网吗 互联网高科技行业有哪些企业 互联网时代高科技布局 科技美学互联网 艺术 武汉亿视互联网科技有限公司 互联网医疗科技 互联网科技小额贷款 互联网科技公司有哪些 浙江互联网科技研学营 互联网科技公司实习生 电子科技大学互联网创业大赛 美国互联网科技公司 扫呗互联网科技有限公司 互联网科技新闻 陕西彩京云互联网科技有限公司
0