python urllib2遇到Content-Encoding=gzip解码为乱码的解决方案

python urllib2遇到Content-Encoding=gzip解码为乱码的解决方案

用Chrome的开发者工具,查看网页的headers,如果response headers出现Content-Encoding : gzip,则urllib2无法对其内容进行解码。

需要用gzip模块来处理,详细方法如下:

yresponse = urllib2.urlopen(url)
rspheaders = yresponse.info()
yread = yresponse.read()
if ('Content-Encoding' in rspheaders and rspheaders['Content-Encoding'] == 'gzip') or ('content-encoding' in rspheaders and rspheaders['content-encoding'] == 'gzip'):
	import gzip
	import StringIO
	ydata = StringIO.StringIO(yread)
	ygz = gzip.GzipFile(fileobj = ydata)
	yread = ygz.read()
	ygz.close()
	ystr = yread.decode('utf8', 'ignore').encode('GB2312')
else:
	ystr = yread.decode('utf8', 'ignore').encode('GB2312')


代码中url是需要访问的网址,decode()和encode()根据实际情况确定。








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值