Requests库

Requests库介绍
1.使用python语言编写
2.使用开源协议,基于urllib库做的二次封装
3.Requests库中封装了相应接口测试方法
Requests库是用Python编写的,基于urllib,采用Apache2 Licensed开源协议的HTTP库;
相比urllib库,Requests库更加方便,可以节约我们大量的工作,完全满足HTTP测试需求
Requests库安装及验证
安装:pip install requests
验证:pip show requests -->显示相应的版本信息
发送请求
常见的HTTP请求方式:GET、POST、PUT、DELETE、HEAD、OPTIONS
使用requests发送网络请求非常简单,只需要调用HTTP请求类型所对应的方法即可。
GET请求
import requests
response = requests.get('https://www.baidu.com/')
请求方法的返回值response为Response对象,我们可以从这个对象中获取所有我们想要的响应信息。

'''
    目标:Get请求方法带参演练
    案例:
        1.https://www.baidu.com?id=1001
        2.https://www.baidu.com?id=1001,1002
        3.https://www.baidu.com?id=1001&kw=北京
    请求:
        1.请求方法:GET
    参数:
        params:字典或字符串(推荐使用字典)
    响应:
        1.响应对象.url #获取请求url
        2.响应对象.status_code #获取响应状态码
        3.响应对象.text #以文本形式显示响应内容
'''
# 1.导包
import requests
# 2.调用get
url='https://www.baidu.com'
# 案例1 定义字典
# params={"id":1001}
# 案例1 字符串形式编写,不推荐
# r=requests.get(url,params="id=1001")
# 案例2
# params={"id":"1001,1002"}   # %2C ASCI值为逗号
# 案例3
params={"id":1001,"kw":"北京"} # 多个键值使用方式
# 请求是带参 params
r=requests.get(url,params=params)  # r为响应数据对象
# 3.获取请求url地址
print("请求url:",r.url)
# 4.获取响应状态码
print("状态码:",r.status_code)
# 5.获取响应信息
print("响应信息:",r.text)

POST请求

作用:新增资源
response = requests.post(url,data=None,json=None)
  url:请求的URL
  data:(可选)要发送到请求体的字典、元组、字节或文件对象
  json:(可选)要发送到请求体的JSON数据
import requests
response = requests.post("https://www.baidu.com/",data={"key":"value"})

扩展:
data与json的区别

  • data:字典对象
  • json:json字符串
  • 提示:
  1. 在python中字典对象和json字符串长得一样,但是后台格式是有区别的
  • 如何将字典对象转为json字符串?
  1. 导入json
  2. json.dumps(字典对象) #转换json字符串

响应数据json()与text区别

  • json():返回类型字典,可以通过键名来获取响应的值
  • text:返回的类型为字符串,无法通过键名来获取响应的值
  • 提示:共同点长得都像字典

PUT请求
作用:更新资源
应用:

  • 导包 import requests
  • 调用put方法 requests.put()
  • 示例:r=requests.put(url,json,headers)

参数:参考post方法参数
响应:

  • r.json()
  • r.status_code

import requests
response = requests.put("https://www.baidu.com/",data={"key":"value"})

DELETE请求
作用:删除资源
应用:

  • 导包 import requests
  • 调用方法 delete

响应:

  • 响应状态码:204

import requests
response = requests.delete("https://www.baidu.com/")

HEAD、OPTIONS
import requests
response = requests.head("https://www.baidu.com/")
response = requests.options("https://www.baidu.com/")
响应内容
response.status_code  获取响应状态码
response.url                 获取请求url地址
response.encoding       查看响应头部字符编码
response.headers        头信息
response.cookies         cookie信息
response.text               文本形式的响应内容
response.content         字节形式的响应内容
response.json()           JSON形式的响应内容

'''
    目标:响应对象常用方法
        1.encoding
            1)获取请求编码
            2)设置相应编码
        2.headers
            1)获取响应信息头信息
    案例:https://www.baidu.com
'''
import requests
url = 'https://www.baidu.com'
r = requests.get(url)
# 查看默认请求编码(不指定响应编码时,用的就是请求编码) ISO-8859-1  这个时候响应信息汉字是乱码
print(r.encoding)
# 设置响应编码
r.encoding = "utf-8"
# 查看响应内容
print(r.text)
# 查看响应信息头
print(r.headers)
'''
    目标:响应对象常用方法
        1.cookies
            1)获取响应cookies信息
        2.content
            1)以字节码形式获取响应信息(图片、视频..多媒体格式)
    案例:
        cookies:https://www.baidu.com
        content:https://www.baidu.com/img/bd_logo1.png?where=super
'''
import requests
# url = 'https://www.baidu.com'
# r = requests.get(url)
# # 获取响应cookies  返回字典对象
# print("cookies信息为",r.cookies)
# # 通过键名获取响应的cookies值
# print("cookies信息为",r.cookies['BDORZ'])
url_img = 'https://www.baidu.com/img/bd_logo1.png?where=super'
r = requests.get(url_img)
# 以text文本形式解析图片 --->乱码
# print(r.text)
# 以字节码形式解析图片
print(r.content)
# 将图片写入当前目录baidu.png
with open("./baidu.png","wb") as f:
    f.write(r.content)

原文地址:https://www.cnblogs.com/peiya/p/12912805.html