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 相关文章推荐
Windows系统配置python脚本开机启动的3种方法分享
Mar 10 Python
Python使用email模块对邮件进行编码和解码的实例教程
Jul 01 Python
Python实现Youku视频批量下载功能
Mar 14 Python
Python分割指定页数的pdf文件方法
Oct 26 Python
解决pandas.DataFrame.fillna 填充Nan失败的问题
Nov 06 Python
Flask核心机制之上下文源码剖析
Dec 25 Python
python字符串替换第一个字符串的方法
Jun 26 Python
springboot配置文件抽离 git管理统 配置中心详解
Sep 02 Python
Python 进程操作之进程间通过队列共享数据,队列Queue简单示例
Oct 11 Python
解决Python logging模块无法正常输出日志的问题
Feb 21 Python
python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)
Mar 09 Python
Python3中对json格式数据的分析处理
Jan 28 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
利用中国天气预报接口实现简单天气预报
2014/01/20 PHP
完美解决phpexcel导出到xls文件出现乱码的问题
2016/10/29 PHP
拖拉表格的JS函数
2008/11/20 Javascript
js控制表单奇偶行样式的简单方法
2013/07/31 Javascript
js获得参数的getParameter使用示例
2014/02/26 Javascript
javascript获取dom的下一个节点方法
2014/09/05 Javascript
浅谈被jQuery抛弃的函数及替代函数
2015/05/03 Javascript
HTML5+jQuery实现搜索智能匹配功能
2017/03/24 jQuery
vue如何从接口请求数据
2017/06/22 Javascript
vue axios登录请求拦截器
2018/04/02 Javascript
微信小程序自定义prompt组件步骤详解
2018/06/12 Javascript
微信小程序中使用wxss加载图片并实现动画效果
2018/08/13 Javascript
react native 获取地理位置的方法示例
2018/08/28 Javascript
JavaScript 格式化数字、金额、千分位、保留几位小数、舍入舍去
2019/07/23 Javascript
JavaScript 中的无穷数(Infinity)详解
2020/02/13 Javascript
JavaScript实现筛选数组
2021/03/02 Javascript
Python中的集合类型知识讲解
2015/08/19 Python
详谈Python高阶函数与函数装饰器(推荐)
2017/09/30 Python
Python创建对称矩阵的方法示例【基于numpy模块】
2017/10/12 Python
python获取指定字符串中重复模式最高的字符串方法
2018/06/29 Python
python3.4+pycharm 环境安装及使用方法
2019/06/13 Python
如何利用Python模拟GitHub登录详解
2019/07/15 Python
详解numpy矩阵的创建与数据类型
2019/10/18 Python
使用python turtle画高达
2020/01/19 Python
matplotlib 对坐标的控制,加图例注释的操作
2020/04/17 Python
Python实现爬取并分析电商评论
2020/06/19 Python
Python读取yaml文件的详细教程
2020/07/21 Python
世界最大的票务市场:viagogo
2017/02/16 全球购物
美国户外服装和装备购物网站:Outland USA
2020/03/22 全球购物
Chupi官网:在爱尔兰手工制作的订婚、结婚戒指和精美珠宝
2020/09/28 全球购物
Python中pass语句的作用是什么
2016/06/01 面试题
医学生个人求职信范文
2014/02/07 职场文书
规范化管理年活动总结
2014/08/29 职场文书
2015年度信用社工作总结
2015/05/04 职场文书
Python实现打乒乓小游戏
2021/09/25 Python
MySQL中IO问题的深入分析与优化
2022/04/02 MySQL