能够使用requests库发送 get/post/put/delete 请求,获取响应状态码/数据
1. 安装
1)pip install requests
2) pip install requests -i https://pypi.douban.com/simple #使用豆瓣的镜像
查验:
1) pip list
2) pip show 库名
2. http请求语法
resp = requests.请求方法(url='url地址',params={k:v},headers={k:v},data={k:v},json={k:v},cookies='cookie数据')
请求方法:
get()/post()/put()/delete()
参数介绍:
- params:查询参数-字典
- headers:请求头-字典
- data:表单格式的请求体-字典
- json:json格式的请求体-字典
- cookies: cookie数据-string类型
案例1:
请求百度
import requests
resp = requests.get(url="https://www.baidu.com/")
print(resp.text)
案例2:
import requests
resp = requests.post(url="https://passport.yunwoke.com/api/v2/user/signin?",
headers={"content-type":"application/x-www-form-urlencoded"},
data={"username":"13527272827","password":"123456"})
print(resp.text)
案例3:
import requests
resp = requests.post(url="https://ent.yunwoke.com/api/tasks?",headers={"content-type":"application/json","cookie":"ARK_ID=JSbf1e81598c59663cc16f37f96ae2fbadbf1e; _ga=GA1.2.610934082.1682316159; _ati=3183880769643; gr_user_id=9bd0b17e-f2ec-4f3f-88e4-a09d17b8108a; _gid=GA1.2.1841359514.1683509357; session_ent=piJ9YP30jUvile3Stvy3sKrgUK0lhKSqmtWTmUASDn61Q9WsFXUFQhn8F18A0afq; Hm_lvt_c4362f2b915e7e30bed59939f1743536=1683527588,1683595883,1683610831,1683687019; ARK_STARTUP=eyJTVEFSVFVQIjp0cnVlLCJTVEFSVFVQVElNRSI6IjIwMjMtMDUtMTAgMTA6NTA6MjAuOTYxIn0%3D; _clck=1oj0nkt|1|fbh|0; gioCookie=yes; 901cc6cae5581b9a_gr_session_id=fdf63e6b-665c-40d9-8795-53ae7a01b1dd; 901cc6cae5581b9a_gr_session_id_sent_vst=fdf63e6b-665c-40d9-8795-53ae7a01b1dd; cwsso_token=NaGbP4uYR7CT433xfuowMzs5B1cMaBIImCYcBlSCapBBV32N9s8Htcn7umbiZ74z; session_token=9VeGpJyCN8waP6qku68AmvcL47ce0f20e03447bf; Hm_lpvt_c4362f2b915e7e30bed59939f1743536=1683687734; _gat_gtag_UA_72266400_2=1; FZ_STROAGE.yunwoke.com=eyJBUktTVVBFUiI6eyJpdGVtX3RpdGxlIjoi5LqR5rKD5a6i5LyB5Lia54mIIn0sIlNFRVNJT05JRCI6IjUxN2U1NGQzN2QyNWQxMmUiLCJTRUVTSU9OREFURSI6MTY4MzY4Nzc2ODYxOCwiQU5TQVBQSUQiOiIwZWM3MzgzNzY0MTlmYjNjIiwiQU5TJERFQlVHIjoyLCJBTlNVUExPQURVUkwiOiJodHRwczovL2RhdGEuY2xvdWRlcndvcmsuY29tLyIsIkZSSVNUREFZIjoiMjAyMzA0MjQiLCJGUklTVElNRSI6ZmFsc2UsIkFSS19JRCI6IkpTYmYxZTgxNTk4YzU5NjYzY2MxNmYzN2Y5NmFlMmZiYWRiZjFlIiwiQVJLRlJJU1RQUk9GSUxFIjoiMjAyMy0wNC0yNCAxNDowMjozNy41MjMiLCJBUktfTE9HSU5JRCI6ImViMzkyMDQ4MjM1YjU0OWMifQ%3D%3D; _clsk=1h699ua|1683687772528|14|1|r.clarity.ms/collect"},
json={"subject":"测试自动22","project_uuid":"2029c90b99da4d06","category":1,"kanban_id":22881,"start_at":None,"end_at":None,"executor_id":"eb392048235b549c"})
print(resp.text)
3. Session
session也叫会话,通常出现在网络通信中,从客户端借助访问终端登录上服务器,直到退出登录所产生的通信数据,保存在会话中
session用于存储用户的信息
session位于服务端,大小直接使用服务器存储空间
session中的数据,不能随意被访问, 安全性较高
session中存储的数据类型,受服务器影响,几乎支持所有的数据类型
session自动管理cookie,因为cookie中的数据都是session传递的。
import requests
# 创建一个 session 实例
session = requests.Session()
# 使用session实例,调登录方法
resp_v = session.post(url="https://passport.yunwoke.com/api/v2/user/signin?",
headers={"content-type":"application/x-www-form-urlencoded",},
data={"username":"13527272827","password":"123456"})
# 使用同一个session实例,调用post方法,新增一个task任务
resp = session.post(url="https://ent.yunwoke.com/api/tasks?",
headers={"content-type":"application/json"},
json={"subject":"测试自动23","project_uuid":"2029c90b99da4d06","category":1,"kanban_id":22881,"start_at":None,"end_at":None,"executor_id":"eb392048235b549c"})
print(resp.text)
cookie 和 session 的区别
- 数据存储问题: cookie 存储在浏览器,session存储在服务器
- 安全性:cookie中的数据可以随意获取。 session的数据多为加密存储,安全性较高
- 数据类型: cookie支持的数据类型受浏览器限制较少,session直接使用服务器存储,支持所有数据类型
- 大小:cookie大小默认4k,session 大小约为服务器存储空间大小
4. 获取指定的响应数据
- 获取url: resp.url
- 获取响应状态码: resp.status_code
- 获取cookie: resp.cookies
- 获取响应头: resp.headers
- 获取响应体: 文本格式 resp.text/ json格式 resp.json()
import requests
resp = requests.get(url="https://www.baidu.com/")
print("url=",resp.url)
print("cookies=",resp.cookies)
print("headers=",resp.headers)
print("body_text=",resp.text)
# 当显示 JSONDecodeError错误时,说明resp不能转为json格式数据
print("body_json=",resp.json())