IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python爬虫学习37 -> 正文阅读

[Python知识库]python爬虫学习37

python爬虫学习37

数据存储篇——JSON

在最最最前面我们学习urllib库的时候曾经提到过JSON,今天让我们好好研究研究它:

JSON全称是 JavaScriptObjectNotation,即JavaScript对象标记,它通过对象和数组的组合来表示数据,构造简洁且结构化程度高,是一种轻量级数据交换格式。

1. 对象和数组

在JavaScript语言中,一切皆对象因此任何支持的数据类型都可以通过JSON表示,例如字符串、数字、对象、数组等。其中对象和数组是比较常用的类型。

对象

对象在JavaScript中是指用花括号 {} 包围起来的内容,数据结构是键值对结构:{key1 : Value1,key2 : value2},key表示键值对的属性,value表示属性对应的值,属性(key)可以用整数和字符串表示,值(value)可以使用任何类型。

数组

数组在JavaScript中是指用方括号[]包围起来的内容,数据结构是索引结构:[“java” , “javascript”,…]。在JavaScript中数组是一种比较特殊的数据类型,因为他也可以像对象那样使用键值对结构,但在一般情况下使用最多的还是索引结构。同样一个数组的值可以是任意类型。

一个JSON对象

[
    {
    "name": "Bob",
    "gender": "male",
    "age": "21"
    },
    {
       "name": "Jane",
        "gender": "female",
        "age": "22"
    }
]

[]包围的地方相当于数组,数组中的元素可以是任意类型,这里的元素是对象使用{}包围。

JSON可以实现两种以上格式任意组合与嵌套,结构清晰,是数据交换的及佳实现方式。

2. 读取JSON

使用Python自带的json库,可以实现json文件的读写操作:

import json

str_0 = """
[{
    "name": "Bob",
    "gender": "male",
    "age": "21"
},{
       "name": "Jane",
        "gender": "female",
        "age": "22"
}]
"""

print("str_0 : ", type(str_0))
# 使用 json 中的loads方法 可以实现由字符串到 json 格式的转换
json_0 = json.loads(str_0)
print(json_0)
print("json_0 : ", type(json_0))

# 同样 使用 dumps 方法 可以实现由 json 到字符串的转换
str_1 = json.dumps(json_0)
print("str_1 : ", type(str_1))
print(str_1)

运行结果:

在这里插入图片描述

可以看到,所谓的json格式在Python中就是列表类型,这样就可以使用Python中的方法很容易的从列表中获取信息了。

# 从列表中获取信息
print(json_0[0]['name'])
print(json_0[1].get('name'))

在这里插入图片描述

特别注意的是JSON数据必须使用双引号包围,而不能使用单引号:

import json

str_0 = """
[{
    'name': "Bob",
    "gender": "male",
    "age": "21"
},{
       "name": "Jane",
        "gender": "female",
        "age": "22"
}]
"""

json_0 = json.loads(str_0)
print(json_0)

否则就会报错:

在这里插入图片描述

从文本中读取JSON
import json

with open('json_text.txt', 'a+', encoding="utf-8") as file:
    # 因为是这里选择了添加模式,所以不要忘记移动光标
    file.seek(0)
    text = file.read()
    data = json.loads(text)
    print(data)

运行结果:

在这里插入图片描述

也可以使用load方法

import json

data = json.load(open('json_text.txt', encoding='utf-8'))
print(data)

运行结果:

在这里插入图片描述

3. 输出JSON

调用dump方法,将JSON保存在文件中

import json

str_0 =[{
    "name": "Bob",
    "gender": "male",
    "age": "21"
}, {
       "name": "Jane",
        "gender": "female",
        "age": "22"
}]


with open('data.txt', 'w', encoding='utf-8') as f:
    f.write(json.dumps(str_0))

运行结果:

在这里插入图片描述

若想要保存JSON的缩进格式,可以传入indent参数:

import json

str_0 =[{
    "name": "Bob",
    "gender": "male",
    "age": "21"
}, {
       "name": "Jane",
        "gender": "female",
        "age": "22"
}]


with open('data.txt', 'w', encoding='utf-8') as f:
    f.write(json.dumps(str_0, indent=2))

运行结果:

在这里插入图片描述

需要注意的是当我们使用中文字符时,若想正确的读入需要传入ensure_ascii参数:

import json

str_0 =[{
    "name": "郭靖",
    "gender": "男",
    "age": "21"
}, {
       "name": "黄蓉",
        "gender": "女",
        "age": "22"
}]


with open('data.txt', 'w', encoding='utf-8') as f:
    f.write(json.dumps(str_0, indent=2, ensure_ascii=False))

运行结果:

在这里插入图片描述

至此,我们一同了解了JSON的使用方法,JSON在进行数据解析式会经常用到,所以大家要多熟悉熟悉。

今日结束,未完待续…

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-05-11 16:25:25  更:2022-05-11 16:26:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 14:28:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码