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 urlopen 使用小示例
Sep 06 Python
python多线程操作实例
Nov 21 Python
Python 遍历列表里面序号和值的方法(三种)
Feb 17 Python
Python cookbook(数据结构与算法)保存最后N个元素的方法
Feb 13 Python
python数据类型之间怎么转换技巧分享
Aug 20 Python
python+pygame实现坦克大战
Sep 10 Python
Python进程,多进程,获取进程id,给子进程传递参数操作示例
Oct 11 Python
关于pandas的离散化,面元划分详解
Nov 22 Python
基于numpy中的expand_dims函数用法
Dec 18 Python
浅谈tensorflow中Dataset图片的批量读取及维度的操作详解
Jan 20 Python
python的dict判断key是否存在的方法
Dec 09 Python
Python中 range | np.arange | np.linspace三者的区别
Mar 22 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中利用post传递字符串重定向的实现代码
2011/04/21 PHP
ThinkPHP中redirect用法分析
2014/12/05 PHP
PHP去除字符串最后一个字符的三种方法实例
2017/03/01 PHP
简单实现php上传文件功能
2017/09/21 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
JavaScript 布尔操作符解析  && || !
2012/08/10 Javascript
JS获取浏览器版本及名称实现函数
2013/04/02 Javascript
JS 新增Cookie 取cookie值 删除cookie 举例详解
2014/10/10 Javascript
JS判断页面是否出现滚动条的方法
2015/07/17 Javascript
JavaScript DOM节点操作实例小结(新建,删除HTML元素)
2017/01/19 Javascript
Ionic3 UI组件之Gallery Modal详解
2017/06/07 Javascript
js时间戳与日期格式之间转换详解
2017/12/11 Javascript
在小程序Canvas中使用measureText的方法示例
2018/10/19 Javascript
微信小程序实现单选选项卡切换效果
2020/06/19 Javascript
Vue.js@2.6.10更新内置错误处机制Fundebug同步支持相应错误监控
2019/05/13 Javascript
对node通过fs模块判断文件是否是文件夹的实例讲解
2019/06/10 Javascript
如何从头实现一个node.js的koa框架
2019/06/17 Javascript
vue实现codemirror代码编辑器中的SQL代码格式化功能
2019/08/27 Javascript
Layui数据表格判断编辑输入的值,是否为我需要的类型详解
2019/10/26 Javascript
[02:59]2014DOTA2西雅图国际邀请赛 圆满落幕中国夺冠
2014/07/23 DOTA
Python中集合的内建函数和内建方法学习教程
2015/08/19 Python
使用Fabric自动化部署Django项目的实现
2019/09/27 Python
python中upper是做什么用的
2020/07/20 Python
分享一个python的aes加密代码
2020/12/22 Python
美国Randolph太阳镜官网:美国制造的飞行员太阳镜和射击眼镜
2018/06/15 全球购物
通息工程毕业生自荐信
2013/10/16 职场文书
工程力学硕士生的自我评价范文
2013/11/16 职场文书
致跳远、跳高运动员广播稿
2014/01/09 职场文书
手机促销活动方案
2014/02/05 职场文书
信用卡逾期证明示例
2014/09/13 职场文书
群众路线教育实践活动民主生活会个人检查对照思想汇报
2014/10/04 职场文书
2015年检验员工作总结范文
2015/04/30 职场文书
详解Java七大阻塞队列之SynchronousQueue
2021/09/04 Java/Android
宫崎骏十大动画电影,宫崎骏好看的动画电影排名
2022/03/22 日漫
《进击的巨人》新联动CM 兵长强势出击兽巨人
2022/04/05 日漫
Windows server 2012 NTP时间同步的实现
2022/06/25 Servers