python如何实现gzip/deflate支持
发表于:2024-11-24 作者:千家信息网编辑
千家信息网最后更新 2024年11月24日,这篇文章主要介绍python如何实现gzip/deflate支持,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!gzip/deflate支持现在的网页普遍支持gzip压缩,这往往
千家信息网最后更新 2024年11月24日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安全错误
数据库的锁怎样保障安全
太空工程师服务器无法连接
python爬虫数据库是什么
uci数据库怎么搜索数据库
软件开发项目评价指标
计算机及软件开发经营范围
联想笔记本找不到服务器ip地址
国际服哪个服务器可以登录
数据库 锁 原因
打印机服务器不能用怎么处理
html jsp连接数据库
中国现行国家法律法规数据库
有哪几个网络安全软件
水浒q传服务器有多少
深圳风暴互联网科技有限公司
网络安全法风险检测
融增网络技术
inceptor元数据库
福田服务器机柜
首届贵州网络安全
网络安全宣传周2020九中
web服务器配置过程
为什么网络安全风险定价
网络安全科技馆什么样
5G技术对网络安全的影响
数据库对应的操作系统
如何两个数据库实时同步
安徽服务器电源特点
宝塔优化数据库
一台服务器如何搭建虚拟集群
全市数据库建设