Python爬虫3.1 — json用法教程

综述

本系列文档用于对Python爬虫技术的学习进行简单的教程讲解,巩固自己技术知识的同时,万一一不小心又正好对你有用那就更好了。
Python 版本是3.7.4

前面的几篇文章讲述了如何进行抓取网页数据,如何进行解析HTML的获取数据用法,本篇文章开始我们讲述如何处理所获得的数据,首先我们来学习json数据文件的处理。

json 介绍

什么是json

JSON(JavaScript Object Notation,JS 对象标记)是一种轻量级的数据交换格式。它基于ECMAScript(w3c制定的js规范)一个自己,采用完全独立于编程语言的文本格式来存储和表示数据。JSON是存储和交换文本信息的语法,类似XML。JSON比XML更小、更快,更易解析简介和清晰的层次结构是的JSON成为理想的数据交换语言,易于人阅读和编写,同时也易于机器解析和生成,并有效提升网络数据传输。

  • JSON指的是JavaScript对象表示法(JavaScript Object Notation)
  • JSON是轻量级的文本数据交换格式
  • JSON独立于语言:JSON使用Javascript语法来描述数据对象,但是JSON仍然独立于语言和平台。JSON解析器和JSON库支持许多不同的编程语言。目前非常多的动态(PHP,JSP,.NET)编程语言都支持JSON
  • JSON具有自我描述性,更易理解

json支持数据格式

  1. 对象(字典),使用花括号。
  2. 列表(数组),使用中括号。
  3. 整形、浮点型。
  4. 字符串类型(字符串必须要用双引号,不能使用单引号)。
  5. 逻辑值(true或false)。
  6. null。

多个数据之间使用都好分开。

【注意】json本质上就是一个字符串。

json库的使用

json库是Python中的一个标准库,json库中有四个方法,分别是:

  • json.dumps():将字典或列表转换为json格式字符串
  • json.loads():将json格式字符串转换为python对象
  • json.dump():将对象转换为json格式字符串并且写入到文件中
  • json.load():从文件中读取json格式字符串转换为python对象

其中dump和dumps是用来把把字典和数组转换为json格式的,dump把转换结果直接写入文件,dumps返回字符串。

load和loads是把json格式的数据转换为字典格式,load直接从json文件中读取数据并返回字典对象,loads把字符串形式的json数据转换成字典格式。

下面我们就讲讲具体用法:

json.dumps()

dumps函数将字典或列表转换为json格式字符串,其原型是dumps(obj,ensure_ascii)参数是要转换的对象。如果要转换的对象里有中文字符的话,要把ensure_ascii设置为False否则中文会被编码为ascii格式使用示例代码如下:

    # 引入json库
    import json
    
    # 声明定义一个列表
    lt = [
        {'name': '张三', 'age': 26},
        {'name': '李四', 'age': 24},
        {'name': '王五', 'age': 23},
    ]
    # 转换成json字符串,打印
    json_str = json.dumps(lt)
    print(json_str)
    
    # 打印结果
    # [{"name": "\u5f20\u4e09", "age": 26}, {"name": "\u674e\u56db", "age": 24}, {"name": "\u738b\u4e94", "age": 23}]

json.loads()

loads()函数将json格式字符串转换为python对象,原型是loads(string)参数string是要转换成python对象json字符串。使用示例代码如下:

    # 引入json库
    import json
    
    # 声明定义一个列表
    lt = [
        {'name': '张三', 'age': 26},
        {'name': '李四', 'age': 24},
        {'name': '王五', 'age': 23},
    ]
    # 转换成json字符串,打印
    json_str = json.dumps(lt)
    print(json_str)
    obj = json.loads(json_str)
    print(obj)
    
    # 打印结果
    # [{"name": "\u5f20\u4e09", "age": 26}, {"name": "\u674e\u56db", "age": 24}, {"name": "\u738b\u4e94", "age": 23}]
    # [{'name': '张三', 'age': 26}, {'name': '李四', 'age': 24}, {'name': '王五', 'age': 23}]

json.dump()

dump()函数将对象转换为json格式字符串并且写入到文件中,其原型是dump(obj, fp)第一个参数obj是要转换的对象,第二个参数fp是要写入数据的文件对象。使用示例代码如下:

    # 引入json库
    import json
    
    # 声明定义一个列表
    lt = [
        {'name': '张三', 'age': 26},
        {'name': '李四', 'age': 24},
        {'name': '王五', 'age': 23},
    ]
    # 写入json.txt文件中
    json.dump(lt, open('json.txt', 'w', encoding='utf8'), ensure_ascii=False)
    
    # with open('json.txt', 'w', encoding='utf8') as fp:
    #     json.dump(lt, fp, ensure_ascii=False)

json.load()

load()函数从文件中读取json格式字符串转换为python对象,其函数原型是load(fp)参数fp是要读取的文件对象。使用示例代码如下:

    # 引入json库
    import json
    
    # 声明定义一个列表
    lt = [
        {'name': '张三', 'age': 26},
        {'name': '李四', 'age': 24},
        {'name': '王五', 'age': 23},
    ]
    # 加载json.txt文件中的json
    ret = json.load(open('json.txt', 'r', encoding='utf8'))
    print(ret)

其他博文链接

发布了154 篇原创文章 · 获赞 404 · 访问量 65万+

猜你喜欢

转载自blog.csdn.net/Zhihua_W/article/details/100725561