python爬虫解析json数据报错(unicode error) 'utf-8' codec can't decode byte 0xbb in position 0
来源:互联网 发布:镇江市迈越网络 编辑:程序博客网 时间:2024/06/07 15:24
先解释一些
概念
序列化(Serialization):将对象的状态信息转换为可以存储或可以通过网络传输的过程,传输的格式可以是JSON、XML等。反序列化就是从存储区域(JSON,XML)读取反序列化对象的状态,重新创建该对象。
JSON(JavaScript Object Notation):一种轻量级数据交换格式,相对于XML而言更简单,也易于阅读和编写,机器也方便解析和生成,Json是JavaScript中的一个子集。
Python2.6开始加入了JSON模块,无需另外下载,Python的Json模块序列化与反序列化的过程分别是 encoding和 decoding
encoding:把一个Python对象编码转换成Json字符串
decoding:把Json格式字符串解码转换成Python对象
对于简单数据类型(string、unicode、int、float、list、tuple、dict),可以直接处理。
我是想从网页的URL获得的json数据里面提取价格信息,代码如下:
# -*- coding: utf-8 -*-import sysimport urllib2import jsonreload(sys)sys.setdefaultencoding('utf8')html=urllib2.urlopen(r'http://flights.ctrip.com/domesticsearch/search/SearchFirstRouteFlights?DCity1=SHA&ACity1=BJS&SearchType=S&DDate1=2016-09-25')#json.dumps(html, ensure_ascii=False)hjson = json.loads(html.read())print hjson['lps']['2016-09-25']然后运行之后报错:
(unicode error) 'utf-8' codec can't decode byte 0xbb in position 0
这个的意思就是说decode的时候utf-8这种编码模式不能解决我的json数据格式。经过请教师兄得知,一般json的编码方式有两种:utf-8和GBK,所以一种不行就试试另外一种,也就是该成以下形式:
# -*- coding: utf-8 -*-import sysimport urllib2import jsonreload(sys)sys.setdefaultencoding('utf8')html=urllib2.urlopen(r'http://flights.ctrip.com/domesticsearch/search/SearchFirstRouteFlights?DCity1=SHA&ACity1=BJS&SearchType=S&DDate1=2016-09-25')#json.dumps(html, ensure_ascii=False)hjson = json.loads(html.read().decode('GBK'))#改动在这里print hjson['lps']['2016-09-25']
这时候运行就成功了。
关于编码的其他形式http://blog.csdn.net/u011350122/article/details/51192826?locationNum=12
- python爬虫解析json数据报错(unicode error) 'utf-8' codec can't decode byte 0xbb in position 0
- Python解析json文件报错:'utf8' codec can't decode byte 0xbb in position 0: invalid start byte
- Python解析json文件报错:'utf8' codec can't decode byte 0xbb in position 0: invalid start byte
- python报错:SyntaxError: (unicode error) 'utf-8' codec can't decode byte 0xb4 in position 2:invalid sta
- python 网络爬虫报错“UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8b in position”解决方案
- 解决 python爬虫'utf-8' codec can't decode byte 0x8b in position 1: invalid start byte‘错误
- python3:SyntaxError: (unicode error) 'utf-8' codec can't decode byte 0xc8 in position xx: invalid co
- 【python】'utf-8' codec can't decode byte 0xce in position 0: invalid continuation byte
- 报错信息:UnicodeDecodeError: 'utf-8' codec can't decode byte 0x88 in position 6382: invalid start byte
- python 3.x + Django 读取csv文件报错:'utf-8' codec can't decode byte 0xba in position 0: invalid start byte
- pandas的read_sql报错UnicodeDecodeError: 'utf-8' codec can't decode byte 0xd3 in position 0: invalid con
- python3.5升级setuptools报错:UnicodeError:'utf-8' codec can't decode byte 0xc7 in position 6135:
- error UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
- [python]pandas的read_csv读入csv文件报错 'utf-8' codec can't decode byte 0xbe in position 0
- Python脚本语法错误:SyntaxError:(unicode error) 'utf8' codec can't decode byte 0xc0 in position 0: invalids
- Python 报错:SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3:
- UnicodeDecodeError: 'utf-8' codec can't decode byte 0xcd in position 0: invalid continuation byte
- 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
- 近似整数
- SQL JOIN 优化
- 计时
- Java虚拟机的内存组成以及堆内存介绍
- Android Studio Error:(1, 1) 错误: 非法字符: \65279
- python爬虫解析json数据报错(unicode error) 'utf-8' codec can't decode byte 0xbb in position 0
- 10. You need to use a Theme.AppCompat theme (or descendant) with this activity
- Android(Java)利用findbugs进行代码静态检查
- 需求:使用SwipeRefreshLayout时,在界面顶部才执行刷新
- 人工智能
- Openstack_SQLAlchemy_一对多关系表的多表插入实现
- Linux文件系统操作命令
- Java 项目优化实战
- Classes and Structures