day 06 网络请求requests 模块jsonpath 写日志(nnlog) mock 接口开发
网络请求模块 urllib(标准模块)python操作网络,也就是打开一个网站,或者请求一个http接口,使用urllib模块(这个模块可以不看)
用到模块中 request parse 两个方法
由于urllib模块,传参麻烦,需要把字典类型parse下变为k=v,post还要把参数转为二进制;接收的值是bytes类型,还要解码,变为字符串,同时直接用的话还要转为为json。比较麻烦。更好的就是用 第三方模块 requests 模块
urllib模块 的 get请求(用json将字符串转换为字典,可以将bytes类型的转换为字典)json里必须是双引号
-----------------------------------------------
urllib模块 post请求
---------------------------------------------------------------------------------------------------------------------------------------------
*(requests模块)
(1.r.json() 返回的json串。2.r.text() 返回的字符串 3.r.content用于下载的时候返回的二进制)https的请求中在请求的括号中加入 verify = False 不然会报错
get()请求 res = requests.get(url,params={"key":"values"}) 应用的时候res= requests.get(参数url,参数data)
post()请求 res =requests.post(url,params={"key":"values"},data{"key":"values"}) params 代表url后面的的值,post请求的地址后面的参数,data 是boday里的数据 应用的时候 res= requests.get(参数url,参数data,headers=header)
post请求 requests.post(url,data)
-----------------
post 请求 入参是 json类型的 可以通过在post请求中指定参数类型 requests.post(url,json=data)
-------------------
post 请求中存在 cookie 的,在请求中用 cookies 进行传递 requests.post(url,data,cookies=cook)
cookie 可以把cookie 放到字典中传
简单的就是 headers ={'cookie':'放cookie的数据'} #用headers传
-----------
请求中有 header 的 直接在请求中通过headers 传递 requests.get(url,headers=header)
-------
把文件上传到服务器 请求中通过files进行传递 requests.post(url,files=file) file = {"file":"open('a.txt","rb"}
---------------------------------------------------------------------------
jsonpaht模块
jsonpaht.jsonpath(d,$..key) .. 模糊匹配,把所有key的值都找到
jsonpaht.jsonpath(d,$.stu_info[0].id) . 也可以按照顺序去查 返回的结果为列表
---------------------------
写日志模块 nnlog(根据level的级别,级别低的能打印出来级别高的)
backCount 是产生几个日志文件(超过了就会清掉最开始的) when(d是按天产生)
---------------------------------------------------------------------------------------
发送邮件的模块 yagmail
网易的发网易的接
---------------------------------------------
flask 模块(用来开发接口,是一个web开发框架)
#mock 接口开发 1,模拟接口 2.给别人提供数据
import flask server = flask.Flask(__name__) #服务 @server.route('url后的地址',methods=【‘post’,'get'】) def a() 把函数加到服务里 server.run(host='0.0.0.0',port=8000,debug=True) 运行接口