python3访问sina首页中文的处理方法


Posted in Python onFebruary 24, 2014
"""
如果只用普通的
import urllib.request
html = urllib.request.urlopen("http://www.sina.com").read()
print(html.decode('gbk'))
出现下面的错误
builtins.UnicodeDecodeError: 'gbk' codec can't decode byte 0x8b in position 1: illegal multibyte sequence
怎么办?原来是有的网站将网页用gzip压缩了 。
请看下面的代码
建议大家用python2
import urllib2
from StringIO import StringIO
import gzip
request = urllib2.Request('http://www.sina.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()
print data.decode("GBK").encode('utf-8')
"""
import io
import urllib.request as r
import gzip
req = r.Request("http://www.sina.com", headers={"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36", "Accept-Encoding": "gzip"})
bs = r.urlopen(req).read()
bi = io.BytesIO(bs)
gf = gzip.GzipFile(fileobj=bi, mode="rb")
print(gf.read().decode("gbk"))
Python 相关文章推荐
Python实现的数据结构与算法之快速排序详解
Apr 22 Python
python查找指定具有相同内容文件的方法
Jun 28 Python
深入讲解Java编程中类的生命周期
Feb 05 Python
浅析Python中元祖、列表和字典的区别
Aug 17 Python
python爬虫入门教程--优雅的HTTP库requests(二)
May 25 Python
python flask实现分页的示例代码
Aug 02 Python
对Python中class和instance以及self的用法详解
Jun 26 Python
Pytorch使用MNIST数据集实现CGAN和生成指定的数字方式
Jan 10 Python
基于Django OneToOneField和ForeignKey的区别详解
Mar 30 Python
python对输出的奇数偶数排序实例代码
Dec 04 Python
python 爬取京东指定商品评论并进行情感分析
May 27 Python
Python中的socket网络模块介绍
Jul 23 Python
python原始套接字编程示例分享
Feb 21 #Python
python实现360皮肤按钮控件示例
Feb 21 #Python
python实现360的字符显示界面
Feb 21 #Python
python和pyqt实现360的CLable控件
Feb 21 #Python
python使用7z解压软件备份文件脚本分享
Feb 21 #Python
python发布模块的步骤分享
Feb 21 #Python
python列表操作使用示例分享
Feb 21 #Python
You might like
PHP 和 HTML
2006/10/09 PHP
php的GD库imagettftext函数解决中文乱码问题
2015/01/24 PHP
windows8.1下Apache+Php+MySQL配置步骤
2015/10/30 PHP
PHP使用http_build_query()构造URL字符串的方法
2016/04/02 PHP
值得分享的php+ajax实时聊天室
2016/07/20 PHP
Phpstorm+Xdebug断点调试PHP的方法
2018/05/14 PHP
js时间戳格式化成日期格式的多种方法
2013/11/11 Javascript
给事件响应函数传参数的四种方式小结
2013/12/05 Javascript
javascript中setTimeout的问题解决方法
2014/05/08 Javascript
谈谈js中的prototype及prototype属性解释和常用方法
2015/11/25 Javascript
轻松搞定js表单验证
2016/10/13 Javascript
Javascript设计模式之装饰者模式详解篇
2017/01/17 Javascript
JavaScript实现瀑布流图片效果
2017/06/30 Javascript
深入理解基于vue-cli的vuex配置
2017/07/24 Javascript
vue不通过路由直接获取url中参数的方法示例
2017/08/24 Javascript
vue中实现图片和文件上传的示例代码
2018/03/16 Javascript
angular2模块和共享模块详解
2018/04/08 Javascript
使用淘宝镜像cnpm安装Vue.js的图文教程
2018/05/17 Javascript
微信小程序MUI导航栏透明渐变功能示例(通过改变opacity实现)
2019/01/24 Javascript
javascript使用substring实现的展开与收缩文字功能示例
2019/06/17 Javascript
如何在vue项目中嵌入jsp页面的方法(2种)
2020/02/06 Javascript
使用node.JS中的url模块解析URL信息
2020/02/06 Javascript
从零学Python之入门(五)缩进和选择
2014/05/27 Python
wxpython学习笔记(推荐查看)
2014/06/09 Python
Python 基础教程之闭包的使用方法
2017/09/29 Python
使用python验证代理ip是否可用的实现方法
2018/07/25 Python
python 实现的发送邮件模板【普通邮件、带附件、带图片邮件】
2019/07/06 Python
使用分层画布来优化HTML5渲染的教程
2015/05/08 HTML / CSS
HTML5中原生的右键菜单创建方法
2016/06/28 HTML / CSS
在子网210.27.48.21/30种有多少个可用地址?分别是什么?
2014/07/27 面试题
销售会计工作职责
2013/12/02 职场文书
幼儿园保育员辞职信
2014/01/12 职场文书
心理健康活动总结
2014/04/30 职场文书
学校安全防火方案
2014/06/07 职场文书
创先争优宣传标语
2014/10/08 职场文书
教师继续教育反思周记
2015/06/25 职场文书