目录
一、发送请求
1.1.GET请求
1).作用
获取资源 (查询)
2).步骤
2.1).导包import request
2.2).调用get方法request.get()
3).响应对象
3.1).获取URL:response.url
3.2).获取响应状态码:response.status_code
3.3).获取响应信息:response.text
4).代码
import requests
response = requests.get('https://www.google.com')
# 获取请求url
print(response.url)
# 获取响应状态码
print(response.status_code)
# 以文本形式显示响应内容
print(response.text)
5).带参代码
# 导包
import requests
# 带参调用
# 不推荐静态写死
# 参数:params:字典或字符串(推荐字典)
# 定义字典
# params = {"id":1001}
# 定义字典
# params = {"id": "1001,1002"} # %2C 为ASCI值的逗号
# 定义字典
params = {"id": 1001, "kw": "广州"}
response = requests.get('https://www.google.com', params)
# 获取请求url
print(response.url)
# 获取响应状态码
print(response.status_code)
# 以文本形式显示响应内容
print(response.text)
1.2.POST请求
1).作用
新增资源
2).应用
2.1).导包 import requests
2.2).调用post方法:requests.post()
3).参数
3.1).url:新增接口的url地址
3.2).json:新增请求的报文
3.3).headers:请求信息头
4).代码(地址已失效)
# 请求地址:http:127.0.0.1:8000/api/departments/
# 请求信息头:Content-Type: application/json
# json格式
# 导包
import requests
# 调用Post方法
# 请求url
url = 'http:127.0.0.1:8000/api/departments/'
# 请求headers
headers = {'Content-Type': 'application/json'}
# 请求json
data = {
"data": [
{
"dep_id": "TT701",
"dep_name": "Test学院",
"slogan": "Test-Master",
"master_nane": "Here is Slogan"
}
]
}
response = requests.post(url,json=data,headers=headers)
# 获取响应对象
print(response.json())
# 获取响应状态码
print(response.status_code)
5).扩展
5.1).data与json区别
1.data:字典对象
2.json:json字符串
3.提示:在python中字典对象和json字符串长的一样,但是后台格式是有区别的
4.如何将字典对象转为json字符串
(1).导入json
(2).json.dumps(字典对象)转换json字符串
5.2).响应数据json()与text区别
1.json()返回类型字典,可以通过键名来获取响应的值
2.text:返回的类型为字符串,无法通过键名来获取响应的值
3.提示:共同点长得都像字典
1.3.PUT请求
1).作用
更新资源
2).应用
2.1).导包 import requests
2.2).调用put方法request.put()
3).参数
参考post方法参数
4).响应
4.1).response.json()
4.2).response.status_code
5).代码(地址已失效)
# 请求地址:http:127.0.0.1:8000/api/departments/
# 请求信息头:Content-Type: application/json
# json格式
# 导包
import requests
# 调用Post方法
# 请求url
url = 'http:127.0.0.1:8000/api/departments/TT701/'
# 请求headers
headers = {'Content-Type': 'application/json'}
# 请求json
data = {
"data": [
{
"dep_id": "TT701",
"dep_name": "Testdep_name学院",
"slogan": "Test-Master",
"master_nane": "Here is Slogan"
}
]
}
response = requests.put(url,json=data,headers=headers)
# 获取响应对象
print(response.json())
# 获取响应状态码
print(response.status_code)
1.4.DELETE请求
1).作用
删除资源
2).应用
2.1).导包 import requests
2.2).调用方法delete
3).响应
响应状态码:204
4).代码
# 请求地址:http:127.0.0.1:8000/api/departments/
# 请求信息头:Content-Type: application/json
# json格式
# 导包
import requests
# 调用delete方法
# 请求url
url = 'http:127.0.0.1:8000/api/departments/TT701/'
response = requests.delete(url)
# 获取响应状态码 --204
print(response.status_code)
二、响应内容
2.1.方法
1).response.status_code状态码
1.1).作用:获取响应状态码
1.2).格式:响应对象.status_code
2).response.url请求url
2.1).作用:获取请求url
2.2).格式:响应对象.url
3).response.encoding查看响应头部字符编码
3.1).作用
1.查看默认请求编码格式--->响应对象.encoding
2.设置响应编码格式--->响应对象.encoding="UTF-8"
4).response.headers头信息
4.1).作用:获取服务器响应信息头
4.2).格式:响应对象.headers
5).response.cookiescookie信息
5.1).作用:获取响应cookie信息(服务器产生)
5.2).格式:响应对象.cookies
6).response.text文本形式的响应内容
6.1).作用:以文本形式解析响应内容
6.2).格式:响应对象.text
7).response.content字节形式的响应内容
7.1).作用:以字节码形式解析响应内容
7.2).格式:响应对象.content
8).response.json() JSON形式的响应内容
8.1).作用:以json字符串形式解析响应内容
8.2).格式:响应对象.json()
2.2.代码
# 导包
import requests
# url
url = 'http://www.baidu.com'
# 调用get方法
response = requests.get(url)
# 查看状态码
print(response.status_code)
# 查看url
print(response.url)
# 查看响应头部字符编码 ISO-8859-1
print(response.encoding)
# 查看头信息 headers信息比较重要(token/session都存储在信息头中)
print(response.headers)
# 查看cookie信息
print(response.cookies)
# 查看文本形式的响应内容
print(response.text)
# 查看字节形式的响应内容
print(response.content)
# 查看json形式的响应内容
print(response.json())
三、Cookie和Session
3.1.Cookie
1).来源:由服务器生成
2).作用:区分同一请求客户端
3).获取:响应对象.cookies
4).设置
4.1).设置:cookies={"获取出来的cookies键名":"获取出的值"}
4.2).应用:request.请求方法(url,cookies=cookies)
5).代码
# 导包
import requests
# 调用post
url_login = "https://demo6.tp-shop.cn/home/User/login.html"
url_code = "https://demo6.tp-shop.cn/index.php?m=Home&c=User&a=verify"
r = requests.get(url_login)
r_cookie = r.cookies
# print("获取的cookie为",r_cookie)
# print(r.content)
# with open("./code.jpg","wb") as f:
# f.write(r.content)
# code = input('请输入验证码:')
# 设置cookie变量,单独获取cookie值
cookie = {"PHPSESSID": r_cookie["PHPSESSID"]}
# 添加cookie信息
data = {
"username": "1967535686@qq.com",
"password": "20021017",
"verify_code": "8888"
}
response = requests.post(url_login, data=data, cookies=cookie)
# 验证是否登录
# print(response.json())
print(response.status_code)
# 查询订单
url_order = "https://demo6.tp-shop.cn/Home/Order/order_list.html"
response_order = requests.get(url_order,cookie)
print(response_order.status_code)
3.2.Session
1).介绍
1.1).在requests里,session对象是一个非常常用的对象,这个对象代表一次用户会话:从客户端浏览器连接服务器开始,到客户端浏览器与服务器断开。
1.2).会话能让我们在跨请求时候保持某些参数,比如在同一个session实例发出的所有请求之间保持cookie。
2).创建session对象
session = requests.Session()
3).获取及应用
3.1).获取
1.导包import requests
2.获取session对象session=requests.session()
3.2).应用
1.通过session对象.方法
2.提示:无论通过session对象调用哪个方法,返回结果都是response对象
4).代码
# url_login = "https://demo6.tp-shop.cn/home/User/login.html"
# url_code = "https://demo6.tp-shop.cn/index.php?m=Home&c=User&a=verify"
# data = {
# "username": "1967535686@qq.com",
# "password": "20021017",
# "verify_code": "8888"
# }
# url_order = "https://demo6.tp-shop.cn/Home/Order/order_list.html"
# 导包
import requests
# 获取session对象
session = requests.Session()
# 请求验证码让session对象记录cookies信息
url_code = "https://demo6.tp-shop.cn/index.php?m=Home&c=User&a=verify"
session.get(url_code)
print(session.cookies)
# 请求登录
url_login = "https://demo6.tp-shop.cn/home/User/login.html"
data = {
"username": "19675356861",
"password": "20021017",
"verify_code": 8888
}
re = session.post(url_login, data)
print(re.status_code)
# 查询订单
url_order = "https://demo6.tp-shop.cn/Home/Order/order_list.html"
re2 = session.get(url_order)
print(re2.status_code)