Json(JavaScript Object Notation)是一种轻量级的数据交换格式。
一个json数据只有且只有一个数据,这个数据的数据类型必须是json支持的数据类型
包含所有的数字,包括整数,小数:例如100,12.4,-2.3
正数前面不能加‘+’。json支持科学计数法
使用双引号括起来的数据;例如:“abc”, “abc123”
只有 true和false两个值。
相当于Python的列表,用[]括起来,多个元素用逗号隔开;
例如:[122,“abc”]
相当于Python的字典,用{}括起来,多个键值对用逗号隔开,
例如:{“a” : 1, “b” : 2, “3” : 4}
null,相当于Python中的none
python中提供了json模块专门处理json数据
将json数据转换成python数据(通过爬虫获取到别人提供的json数据,在python中出处理它)
a、转换方式
json | python |
---|---|
数字 | int/float |
字符串 | 字符串 |
布尔 | bool,会将json中的true/false转换成True/False |
数组 | 列表 |
字典 | 字典 |
空值(null) | None |
b、loads方法
loads(字符串, encoding = ‘utf-8’) - 将字符串中的json数据转换成对应的python数据
注意:字符串中的内容必须是字符串数据
import json
content = json.loads('"abc"', encoding = 'utf-8')
print(content, type(content)) # abc
将python数据转换成json数据(python写后台接口将数据提供给客户端)
转换方式 python -> json
python | json (json.dumps(对象)) |
---|---|
100(整数) | 100(字符串) |
‘abc’ | “abc”(单引号变成双引号) |
True/False | true/false |
列表 | 数组 |
元祖 | 数组 |
字典 | 字典 |
集合 | 不能转化成json,报错 |
None | null |
注意:转换后都是字符串类型
dumps(对象) # 这儿的对象指的就是python数据
将指定的对象转换成json数据,以字符串的形式返回这儿的对象指的就是python数据
注意:返回值是字符串,并且字符串的内容是json数据
json文件不一定是后缀是.json都是json文件,json文件是文件内容是json数据的文件。
load(文件对象) - 将指定文件中的内容读出来,并且转换成python对应数据。文件对象对应的文件必须是json文件。
dump(对象, 文件对象) - 将指定对象转换成是json格式的字符串,然后写入指定的文件中。
注意:这儿的对象对应的类型必须是能够转换成json的数据类型。
python中的数据请求(HTTP请求),是通过第三方库requsets来提供的。
requests的第三方库的使用
get/post 方法都是发送请求获取接口提供的数据
获取数据的方法都是get请求
get(url, params = None)
url - 需要获取的数据的接口地址
params - 字典,参数列表(给服务器发送请求的时候需要传给服务器的数据)
完整的接口:协议://主机地址/路径?参数名1=值1&参数名2=值2
发送请求,并且获取返回的数据,
服务器返回的数据叫响应
从响应中获取数据
1、获取json数据
content_json = response.json() # 会自动将json数据转换炒年糕python对应的数据
2、获取字符串数据
content_text = response.text
print(type(content_text))
print(content_text)
3、获取二进制数据
content_bytes = response.content # 获取图片,音频等
print(content_bytes)
post(url, params = None, json = None)
知道某段代码会出现异常,而且没有办法避免,同时又不希望出现异常的时候程序不崩溃;这个时候就可以通过异常捕获来让程序不崩溃并且自行处理异常。
a、try - except(可以捕获所有类型的异常)
try:
代码段1(可能出现异常的代码段)
except:
代码段2(出现异常后处理异常的代码段)
执行过程:执行代码段1,如果代码段1出现异常,程序不崩溃,直接执行代码段2
如果代码段1中没有出现异常,就不执行代码段2而是直接执行后面的其他语句。
b、try - except 错误类型 (捕获指定类型的异常)
try:
代码段1
except 错误类型:
代码段2(只有代码段1中出现了指定类型的异常才捕获)
执行过程:代码段1中出现指定类型错误就执行代码段2
c、try - except(错误类型1,错误类型2…) (同时捕获多种异常)
try:
print('abc'[4])
except (IndexError, IndentationError):
print("Error")
d、try - except 错误类型1 - except 错误类型2…(同时捕获多种异常,可以对不同的异常做不同的处理)
try:
代码段1
except 错误类型1:
代码段2
except 错误类型2:
代码段3
主动让程序崩溃
raise 错误类型
if age > 18:
raise ValueError
说明:错误类型 - 可以是系统类型的错误,也可以是自定义错误类型(要求这个值必须是一个类,而且是Exception的子类)