背景说明: 1、为了防止三天打鱼两天晒网式学习 2、每日更新1-2个小知识点或者案例 3、只看和跟着做的理解程度是不一样的 4、建议一起打卡练习 5、互相督促打卡 + v:yifuqiang2021
requests安装 requests使用 JSON类型解析
安装命令 官方文档
pip install requests
复制
get请求 带参数的get请求 传统表单类post请求(x-www-form-urlencoded) JSON类型的POST请求(application/json)
组装请求:请求包含:url,params(url参数),data(请求数据),header(请求头),cookie等 发送请求,获取响应:支持get,post等方法发送,返回的是一个响应对象 解析响应:输出响应文本
-- 新建一个demo.py,发送一次请求
# 导入requests库
import requests
# 1、组装请求
url = "http://httpbin.org/get"
# 2、发送请求,获取响应
res = requests.get(url)
# 3、解析响应
print(res.text)
复制
params(url参数:为字典格式,单独提出来是为了方便参数的添加修改等操作
# 导入requests库
import requests
# 1、组装请求
url = "http://httpbin.org/get"
# 2、发送请求,获取响应
payload = {'key1':'value1','key2':'value2'}
res = requests.get(url,params=payload)
# 3、解析响应
print(res.text)
复制

data:请求数据,为字典格式
# 导入requests库
import requests
# 1、组装请求
url = "http://httpbin.org/post"
# 2、发送请求,获取响应
data = {'key1':'value1','key2':'value2'}
res = requests.post(url,data=data)
# 3、解析响应
print(res.text)
复制

data参数支持字典格式也支持字符串格式 字典格式,requests方法会将其按照默认表单urlencoded格式转换为字符串 字符串,则不转化 data以字符串格式传输需要遵循以下几点 必须是严格的JSON格式字符串,里面必须用双引号,k-v之间必须有逗号,布尔值必须是小写的true/false等等
不能有中文,直接传字符串不会自动编码
引号 单行(注意外层有引号,为字符串):' ' 多行文本, 字符串格式:""" """
# 导入requests库
import requests
import json
# 1、组装请求
url = "http://httpbin.org/post"
# 2、发送请求,获取响应
data = """{
"key1":"value1",
"key2":"value2"
} """
headers = {"Content-Type":"application/json"}
res = requests.post(url=url,data=json.dumps(data),headers=headers)
# 3、解析响应
print(res.text)
复制

为什么要序列化 什么是序列化 对象在HTTP中的传输过程 JSON对象与Python字典的区别 JSON格式操作方法 什么时候使用JSON对象(字典)什么时候使用JSON文本
程序中的对象,如Python中的字典、列表、函数、类等,都是存在内存中的,一旦断电就会消失,不方便传递或存储 所以需要将内存中的对象转化为文本或者文件格式,来满足传输和持久化(存储)需求
序列化:内存对象 -> 文本/文件 反序列化:文本 -> 内存对象
HTTP协议是超文本传输协议,是通过文本或二进制进行传输的 所以发送的请求要转化成文本进行传输 收到的响应也是文本格式 如果是JSON,一般还需要将文本格式重新转化为对象
服务器收到文本请求 -> 将文本请求转化为对象,获取其中的参数,处理业务 返回文本格式的响应 -> 客户端转为对象格式来从响应中取值
JSON对象是javascript object即javascript中的对象,是一种通用的格式,格式严格,不支持备注 Python中一般提到JSON对象指的是字典
JSON文本是符合JSON格式的文本,实际上是一个字符串 JSON对象是内存中一个对象,拥有属性和方法,可以通过对象获取其中的参数信息
字典中的引号支持单引号和双引号,JSON格式只支持双引号 字典中的True/False首字母大写,JSON格式为true/false 字典中的空值为None, JSON格式为null
序列化(字典 -> 文本/文件句柄):json.dumps() json.dump() 反序列化(文本/文件句柄 -> 字典) : json.loads() json.load() 文件的序列化与反序列化
# 导入requests库
import requests
import json
# 1、组装请求
url = "http://www.tuling123.com/openapi/api"
# 2、发送请求,获取响应
params ={"key":"ec961279f453459b9248f0aeb6600bbe","info":"怎么又是你呀"}
res = requests.post(url,params)
# 3、解析响应
print(res.text)
res_dict = res.json() # 将响应转为json对象(字典)等同于`json.loads(res.text)`
print(json.dumps(res_dict,indent=2, sort_keys=True, ensure_ascii=False))
复制

indent: 缩进空格数,indent=0输出为一行 sork_keys=True: 将json结果的key按ascii码排序 ensure_ascii=Fasle: 不确保ascii码,如果返回格式为utf-8包含中文,不转化为\u
import json
res_text ='{"name": "\u5f20\u4e09", "password": "123456", "gender": "male"}'
# 反序列化
res_dict = json.loads(res_text)
print(res_dict['name'])
复制

序列化:字典 -> 文件句柄 序列化:文件句柄 -> 字典
import json
res_dict = {'name': '张三', 'password': '123456', "male": True} # 字典格式
f = open("demo1.json","w")
json.dump(res_dict,f)
复制


import json
f = open("demo2.json","r",encoding="utf-8") # 文件中有中文需要指定编码
f_dict = json.load(f)
print(f_dict['name'])
f.close()
复制

发送请求时,使用json.dumps(data),转化为文本发送 收到请求后,使用json.loads(res.text),转化为字典,获取其中的参数信息
requests安装 pip install requests requests使用 请求的步骤 组装请求:请求包含:url,params(url参数),data(请求数据),header(请求头),cookie等 发送请求,获取响应:支持get,post等方法发送,返回的是一个响应对象 解析响应:输出响应文本 使用 无参数GET请求 带参数GET请求,params(url参数,为字典格式) 传统表单类POST请求(x-www-form-urlencoded),data(请求数据,为字典格式) JSON类型的POST请求(application/json) 字符串"""data内容多行""",或者 'data内容单行' 严格的JSON格式字符串,里面必须用双引号,k-v之间必须有逗号 JSON类型解析 为什么要序列化 将内存中的对象转化为文本或者文件格式,来满足传输和持久化(存储)需求 什么是序列化 序列化:内存对象 -> 文本/文件 反序列化:文本 -> 内存对象 对象在HTTP中的传输过程 HTTP协议是超文本传输协议,是通过文本或二进制进行传输的 所以发送的请求要转化成文本进行传输,收到的响应也是文本格式 JSON对象与Python字典的区别 JSON对象是javascript object即javascript中的对象 Python中一般提到JSON对象指的是字典 JSON格式操作方法 序列化(字典 -> 文本/文件句柄):json.dumps() json.dump() 反序列化(文本/文件句柄 -> 字典) : json.loads() / json.load() 什么时候使用JSON对象(字典)什么时候使用JSON文本? 发送请求时,使用json.dumps(data),转化为文本发送 收到请求后,使用json.loads(res.text),转化为字典,获取其中的参数信息
目前欠了两篇文章,本打算昨天补上的,昨天电脑进水了导致多欠了一篇orz 最近负责的东西比较多,等我下周忙完一定会补上欠的内容 因为最近目标有变动,优先更新接口测试这块,django的部分会以次条的形式不定期更新
文章转载自走向易富强之路,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。