“JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。”——《百度百科》

我们在爬取网站的时候,经常会遇到获取了html却没有在标签里找到数据的情况。这种情况大概率html只是一个框架,而数据是JavaScript脚本从服务器获取JSON数据后再把数据写入标签的。所以我们直接获取html会找不到需要的数据。解决的方法也不难,使用浏览器的开发者模式可以看到网页对服务器发出的请求,找到获取数据的请求后模拟该请求即可从服务器获取JSON数据。获取JSON数据后即可用json库转化为python的数据类型。

JSON库有4个常用的方法,下面来一一介绍给大家。

json.loads()

该方法是将JSON字符串转化为python数据类型。

#导入json库

import json

#定义JSON格式的字符串

json_str = '{"测试": 123}'

#使用loads()将JSON字符串转化为python数据类型,将会返回{"测试": 123}

json.loads(json_str)

json.dumps()

该方法是将python数据类型转化为JSON字符串。

#导入json库

import json

#定义一个字典

dic = {"测试": 123}

#使用dumps()将python字典转化为JSON字符串,将会返回'{"测试": 123}'

#ensure_ascii参数设置为False时允许有中文

json.dumps(dic, ensure_ascii=False)

json.load()

该方法是将文件中的JSON字符串转化为python数据类型。

#导入json库

import json

#定义JSON格式的字符串

json_str = '{"测试": 123}'

#将字符串写入文件

with open(file, 'w', encoding='utf-8') as f:

f.write(json_str)

#使用load()从文件读取JSON字符串转化为python数据类型,将会返回一个字典

with open(file, 'r', encoding='utf-8') as f:

j = json.load(f)

json.dump()

该方法是将python数据类型转化为JSON字符串后写入文件。

#导入json库

import json

#定义一个字典

dic = {"测试": 123}

#使用dump()将python数据类型转化为JSON字符串后写入文件,indent参数设置缩进

with open(file, 'w', encoding='utf-8') as f:

json.dump(dic, f, ensure_ascii=False, indent=4)

获取了字典后,可以逐层遍历字典item去查看数据所在的位置和关联的键,这样就能用代码把数据“揪”出来了。

总结:

1.loads(),dumps()这两个后面带s的方法就是跟字符串有关的方法

2.创建JSON格式的字符串时只能用双引号

3.有中文时需要设置ensure_ascii参数

4.indent参数能设置缩进的空格

往期精彩回顾

往期精彩回顾无需要太多,只需要一张Python词云图​mp.weixin.qq.com如何写出Pythonic的代码?​mp.weixin.qq.com装饰一下你的Python函数吧~​mp.weixin.qq.com

今天也学到了很多东西呢,明天有什么新知识呢?真期待鸭~如果喜欢文章可以关注我哦~

python json有什么用_为什么要学习用Python解析JSON数据?相关推荐

  1. python公开课乐博学院_当我学完 Python ,我学会了些什么【乐搏TestPRO】

    本文是本人学完Python后的一遍回顾,加深理解顺便留作手册以备查阅. 学习Python的这几天来,觉得Python还是比较简单,容易上手的,就基本语法而言,但是有些高级特性掌握起来还是有些难度,需要 ...

  2. 高中学历python培训靠谱吗_高中学历学完Python就能干人工智能?

    最近Python大热,主要是人工智能的热度,昨天后院活动部介绍了一位女网友为男朋友选择Java还是Python,大量的程序员热议,也有人询问如何学习Python,比如这位网友询问高中学历学习Pytho ...

  3. 用python实现二分法求平方根_二分法求平方根(Python实现)

    使用二分法(Bisection Method)求平方根. def sqrtBI(x, epsilon): assert x>0, 'X must be non-nagtive, not ' + ...

  4. java json删除指定元素_简洁而优雅,Python Tablib实现将数据导出为Excel, Json等N种格式...

    遇见 Tablib 我们在 Python 实际开发过程中,经常涉及将数据导出为 Excel.Csv.Yaml.Json 等各种格式的文件的需求,一些粗鲁的实现方式是通过安装各种第三方模块以支持不同格式 ...

  5. 11小时 python自动化测试从入门到_从设计到开发Python接口自动化测试框架实战,资源教程下载...

    课程名称 从设计到开发Python接口自动化测试框架实战,资源教程下载 课程简介: 课程从接口基础知识入门,从抓包开始,到接口工具的运用,再到常见接口库.接口开发.Mock服务.unittest框架的 ...

  6. python 结构体数组 定义_一篇文章弄懂Python中所有数组数据类型

    前言 数组类型是各种编程语言中基本的数组结构了,本文来盘点下Python中各种"数组"类型的实现. list tuple array.array str bytes bytearr ...

  7. python response重头开始_你必须学写 Python 装饰器的五个理由

    你必须学写Python装饰器的五个理由 ----装饰器能对你所写的代码产生极大的正面作用 作者:Aaron Maxwell,2016年5月5日 Python装饰器是很容易使用的.任何一个会写Pytho ...

  8. python中年大叔学编程_中年大叔学编程-Python简单操作文件

    原标题:中年大叔学编程-Python简单操作文件 在计算机中,经常打交道的就是各种文档,用得比较多的软件就是office和记事本来操作文件,那么我们试试用Python来简单读写文件. Open函数的用 ...

  9. python之路 mysql 博客园_教为学:Python学习之路(二):MySQLdb的几种安装方式,以及用Python测试连接MySql...

    教为学:Python学习之路(二):MySQLdb的几种安装方式,以及用Python测试连接MySql Easy_install安装MySQLdb 很简单,以至于我不晓得该怎么说.一句话. sodu ...

最新文章

  1. 错误提示没了_ESC错误排查-系统启动篇
  2. AEC、AGC、ANS在视音频会议中的作用?
  3. wireless(二维数组前缀和)
  4. 深入了解Intel保护模式
  5. arm linux 内核启动,Linux(ARM)内核启动地址
  6. MySQL 中的 FOUND_ROWS() 与 ROW_COUNT() 函数
  7. Linux文件系统的类型及日志文件系统和非日志文件系统的区别
  8. Oracle操作数据库常用名命令(set linesize,pagesize,conn命令,feedback命令)
  9. 【cocos2d-x】瓷砖地图(TileMap)基础知识
  10. 真香!微软将为Edge浏览器带来超好用的全新侧边搜索功能:无需跳转网页
  11. 华为手机多久可以摆脱美国技术依赖?任正非放出豪言!
  12. 递归经典案例汉诺塔 python实现_python实现汉诺塔递归算法经典案例
  13. 巧用主力进出、主力买卖指标进行波段操作——逃顶和抄底
  14. ScreenCapture API – QTP截屏工具
  15. 手机手写签名 php,jSignature手写签名
  16. apk改之理简单教程
  17. 华为2019年4月10日实习生笔试题
  18. Flux、Mono、Reactor 实战(史上最全)
  19. python requests soup_带你了解python爬虫requests模块BeautifulSoup使用方式!
  20. 白苹果了怎么办_建行储蓄卡云闪付bug还款玩法(苹果和安卓机攻略)

热门文章

  1. github:已经提交并push后再次追加提交
  2. std::move C++11 标准新特性: 右值引用与转移语义
  3. 使用gotoxy()函数移动控制台光标
  4. Ubuntu16.04如何换pip源
  5. NCTF2019 -- PWN部分writeup
  6. 【YApi】 yapi docker-compose 部署
  7. 记一次 Git 操作的糟心之旅
  8. 1.7 Java创建对象详解(显式创建和隐含创建)
  9. 限制Textarea文本域内容的长度
  10. 计算机考研计组简答题复习-本篇长期更新