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写asp详细讲解
Dec 16 Python
Python使用py2exe打包程序介绍
Nov 20 Python
Python基于列表list实现的CRUD操作功能示例
Jan 05 Python
python测试mysql写入性能完整实例
Jan 18 Python
对python捕获ctrl+c手工中断程序的两种方法详解
Dec 26 Python
对Python 两大环境管理神器 pyenv 和 virtualenv详解
Dec 31 Python
Python 微信之获取好友昵称并制作wordcloud的实例
Feb 21 Python
基于wxPython的GUI实现输入对话框(1)
Feb 27 Python
python中bs4.BeautifulSoup的基本用法
Jul 27 Python
python pycharm最新版本激活码(永久有效)附python安装教程
Sep 18 Python
Python实现发票自动校核微信机器人的方法
May 22 Python
浅谈tensorflow 中的图片读取和裁剪方式
Jun 30 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中filter函数验证、过滤用户输入的数据
2014/01/13 PHP
phpstudy默认不支持64位php的解决方法
2017/02/20 PHP
PHP析构函数destruct与垃圾回收机制的讲解
2019/03/22 PHP
YII框架模块化处理操作示例
2019/04/26 PHP
php 函数中静态变量使用的问题实例分析
2020/03/05 PHP
js读取本地excel文档数据的代码
2010/11/11 Javascript
原生javascript和jquery判断浏览器版本等信息
2013/07/04 Javascript
JS对象转换为Jquery对象示例
2014/01/26 Javascript
开发中可能会用到的jQuery小技巧
2014/03/07 Javascript
javascript初学者常用技巧
2014/09/02 Javascript
功能强大的Bootstrap使用手册(一)
2016/08/02 Javascript
原生JS实现-星级评分系统的简单实例
2016/08/21 Javascript
原生JS实现《别踩白块》游戏(兼容IE)
2017/02/20 Javascript
提高Web性能的前端优化技巧总结
2017/02/27 Javascript
微信小程序page的生命周期和音频播放及监听实例详解
2017/04/07 Javascript
JS图片轮播与索引变色功能实例详解
2017/07/06 Javascript
VUE axios发送跨域请求需要注意的问题
2017/07/06 Javascript
Vue的Flux框架之Vuex状态管理器
2017/07/30 Javascript
jQuery 实时保存页面动态添加的数据的示例
2017/08/14 jQuery
关于redux-saga中take使用方法详解
2018/02/27 Javascript
webpack4+Vue搭建自己的Vue-cli项目过程分享
2018/08/29 Javascript
在Vue中使用axios请求拦截的实现方法
2018/10/25 Javascript
详解Vue源码之数据的代理访问
2018/12/11 Javascript
JS+php后台实现文件上传功能详解
2019/03/02 Javascript
微信小程序使用npm包的方法步骤
2019/08/13 Javascript
JS阻止事件冒泡的方法详解
2019/08/26 Javascript
Vue父组件向子组件传值以及data和props的区别详解
2020/03/02 Javascript
addEventListener()和removeEventListener()追加事件和删除追加事件
2020/12/04 Javascript
python万年历实现代码 含运行结果
2017/05/20 Python
python脚本调用iftop 统计业务应用流量的思路详解
2019/10/11 Python
python matplotlib 绘图 和 dpi对应关系详解
2020/03/14 Python
Python list和str互转的实现示例
2020/11/16 Python
毕业设计计划书
2014/01/09 职场文书
保安的辞职报告怎么写
2014/01/20 职场文书
党员承诺书格式范文
2015/04/28 职场文书
2016年党员承诺书范文
2016/03/24 职场文书