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 pickle 和 shelve模块的用法
Sep 16 Python
Python 实现删除某路径下文件及文件夹的实例讲解
Apr 24 Python
Django压缩静态文件的实现方法详析
Aug 26 Python
CentOS 7下安装Python3.6 及遇到的问题小结
Nov 08 Python
python变量赋值方法(可变与不可变)
Jan 12 Python
对python while循环和双重循环的实例详解
Aug 23 Python
python tkinter基本属性详解
Sep 16 Python
Python切图九宫格的实现方法
Oct 10 Python
Django项目使用ckeditor详解(不使用admin)
Dec 17 Python
Python绘制组合图的示例
Sep 18 Python
Python+kivy BoxLayout布局示例代码详解
Dec 28 Python
基于Python实现天天酷跑功能
Jan 06 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
Windows 下的 PHP-PEAR 安装方法
2010/11/20 PHP
PHP编码转换
2012/11/05 PHP
美图秀秀web开放平台--PHP流式上传和表单上传示例分享
2014/06/22 PHP
CodeIgniter配置之routes.php用法实例分析
2016/01/19 PHP
PHP基于递归算法解决兔子生兔子问题
2018/05/11 PHP
为jQuery.Treeview添加右键菜单的实现代码
2010/10/22 Javascript
jQuery模拟点击A标记示例参考
2014/04/17 Javascript
jquery操作checkbox实现全选和取消全选
2014/05/02 Javascript
JavaScript动态创建link标签到head里的方法
2014/12/22 Javascript
jQuery鼠标事件汇总
2015/08/30 Javascript
jQuery实现从身份证号中获取出生日期和性别的方法分析
2016/02/25 Javascript
AngularJS实践之使用ng-repeat中$index的注意点
2016/12/22 Javascript
树结构之JavaScript
2017/01/24 Javascript
JavaScript评论点赞功能的实现方法
2017/03/13 Javascript
nodejs入门教程五:连接数据库的方法分析
2017/04/24 NodeJs
Angular.js指令学习中一些重要属性的用法教程
2017/05/24 Javascript
Jquery+Ajax+xml实现中国地区选择三级联动菜单效果(推荐)
2017/06/09 jQuery
nodejs连接mysql数据库及基本知识点详解
2018/03/20 NodeJs
Angular入口组件(entry component)与声明式组件的区别详解
2018/04/09 Javascript
JavaScript callback回调函数用法实例分析
2018/05/08 Javascript
Vue关于组件化开发知识点详解
2020/05/13 Javascript
python中的__init__ 、__new__、__call__小结
2014/04/25 Python
Python3标准库总结
2019/02/19 Python
python实现小球弹跳效果
2019/05/10 Python
Python中Numpy mat的使用详解
2019/05/24 Python
python实现读取excel文件中所有sheet操作示例
2019/08/09 Python
Python线程障碍对象Barrier原理详解
2019/12/02 Python
python如何导出微信公众号文章方法详解
2020/08/31 Python
Python求区间正整数内所有素数之和的方法实例
2020/10/13 Python
CSS Grid布局教程之什么是网格布局
2014/12/30 HTML / CSS
10种CSS3实现的loading动画,挑一个走吧?
2020/11/16 HTML / CSS
Smashbox官网:美国知名彩妆品牌
2017/01/05 全球购物
电话客服工作职责
2014/07/27 职场文书
微信小程序实现拍照和相册选取图片
2021/05/09 Javascript
Vue组件化(ref,props, mixin,.插件)详解
2022/05/15 Vue.js
利用Apache Common将java对象池化的问题
2022/06/16 Servers