Python 3爬虫网易云(七)—— JSON简介与解析
来源:互联网 发布:阿拉丁控股集团 知乎 编辑:程序博客网 时间:2024/05/29 10:27
今天本来打算做网易云简单的歌词爬取的,后来发现需要用到一些json库的知识。所以,先给大家介绍一下Python中json库的数据解析和基本操作。
(一)什么是json:
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一个子集。JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。这些特性使JSON成为理想的数据交换语言。
JSON建构于两种结构:
“名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),纪录(record),结构(struct),字典(dictionary),哈希表(hash table),有键列表(keyed list),或者关联数组 (associative array)。
值的有序列表(An ordered list of values)。在大部分语言中,它被理解为数组(array)。
这些都是常见的数据结构。事实上大部分现代计算机语言都以某种形式支持它们。这使得一种数据格式在同样基于这些结构的编程语言之间交换成为可能。
(二)Python JSON模块
Python2.6开始加入了JSON模块,无需另外下载,Python的Json模块序列化与反序列化的过程分别是 encoding和 decoding。encoding-把一个Python对象编码转换成Json字符串;decoding-把Json格式字符串解码转换成Python对象。要使用json模块必须先导入:
import json
它包含两个函数:
json.dumps(): 对数据进行编码。
json.loads(): 对数据进行解码。
在json的编解码过程中,python 的原始类型与json类型会相互转换,具体的转化对照如下:
Python 编码为 JSON 类型转换对应表:
JSON 解码为 Python 类型转换对应表:
json.dumps 与 json.loads 实例
以下实例演示了 Python 数据结构转换为JSON:
#!/usr/bin/python3import json# Python 字典类型转换为 JSON 对象data = { 'no' : 1, 'name' : 'Runoob', 'url' : 'http://www.runoob.com'}json_str = json.dumps(data)print ("Python 原始数据:", repr(data))print ("JSON 对象:", json_str)
执行以上代码输出结果为:
Python 原始数据: {'url': 'http://www.runoob.com', 'no': 1, 'name': 'Runoob'}JSON 对象: {"url": "http://www.runoob.com", "no": 1, "name": "Runoob"}
通过输出的结果可以看出,简单类型通过编码后跟其原始的repr()输出结果非常相似。
接着以上实例,我们可以将一个JSON编码的字符串转换回一个Python数据结构:
#!/usr/bin/python3import json# Python 字典类型转换为 JSON 对象data1 = { 'no' : 1, 'name' : 'Runoob', 'url' : 'http://www.runoob.com'}json_str = json.dumps(data1)print ("Python 原始数据:", repr(data1))print ("JSON 对象:", json_str)# 将 JSON 对象转换为 Python 字典data2 = json.loads(json_str)print ("data2['name']: ", data2['name'])print ("data2['url']: ", data2['url'])
执行以上代码输出结果为:
Python 原始数据: {'name': 'Runoob', 'no': 1, 'url': 'http://www.runoob.com'}JSON 对象: {"name": "Runoob", "no": 1, "url": "http://www.runoob.com"}data2['name']: Runoobdata2['url']: http://www.runoob.com
如果你要处理的是文件而不是字符串,你可以使用 json.dump() 和 json.load() 来编码和解码JSON数据。例如:
# 写入 JSON 数据with open('data.json', 'w') as f: json.dump(data, f)# 读取数据with open('data.json', 'r') as f: data = json.load(f)
更多资料可以查阅Python的json库官方文档
这里写链接内容
- Python 3爬虫网易云(七)—— JSON简介与解析
- Python 3爬虫网易云(八)—— 对网易云歌词的爬取
- Python 3爬虫网易云(一)—— Requests库用法
- Python 3爬虫网易云(二)—— BeautifulSoup库用法上篇
- Python 3爬虫网易云(三)—— BeautifulSoup库用法下篇
- Python 3爬虫网易云(四)—— 正则表达式上篇之匹配法则
- Python 3爬虫网易云(五)—— 正则表达式下篇之HTML标签
- Python 3爬虫网易云(六)—— 第三方库安装
- Python 3爬虫网易云(十)—— 爬取歌词读入文件存储
- Java网络爬虫(七)--JSON数据的解析
- Python 3爬虫网易云(九)—— 获取一个歌手的热门50首歌词
- 网易云课堂python里面的爬虫
- 网易云课堂 python网络爬虫实战
- JSON简介与JS解析JSON
- python爬虫系列(一):爬虫简介
- Python——爬虫(解析简单标签)
- Python爬虫——DNS解析缓存
- Python爬虫包 BeautifulSoup 学习(一) 简介与安装
- Lua的系统库
- mybatis报错:Could not instantiate bean class [Dao.stuDao]: Specified class is an interface
- java中static静态的一些实用方法(2)
- c++初识,c++与c语言区别。及函数重载,缺省值等等
- saltstack的简单安装和配置
- Python 3爬虫网易云(七)—— JSON简介与解析
- Io流注册登录项目,注册的用户可以在电脑上保存下来,方便下次登录
- Hihocoder Offer28 习题总结
- Windows同时安装Python2、Python3兼容运行
- PL/SQL 学习分享(续)
- 用 LoadLibraryEx 失败
- python iter函数特殊用法
- 虚拟机VMware中Ubuntu编译安装lnmp时,如何复制windows中的内容,粘贴到Ubuntu中!
- LeetCode50_Pow(x,n)