在dos窗口中输入命令:
pip install requests
import requests
# 发送请求
response = requests.get('http://www.baidu.com')
# 查看当前编码格式
print(response.encoding)
# 修改编码格式
response.encoding = 'UTF-8'
# 查看响应
print(response.text)
import requests
#定义请求的接口
url='http://testingedu.com.cn:8000/index.php'
#定义请求的参数
data={
'username':'13800138006',
'password': '123456',
' verify_code':'nkpv'
}
#发送请求
re=requests.post(url=url,data=data)
#查看响应数据
print(re.text)
requests.get() #发送get请求
requests.post() #发送post请求
requests.delete() #发送delete请求
requests.put() #发送put请求
requests.request() #最核心的方法
常用于get请求,传递字符串参数,使用params
#常用于get请求,通过params关键字进行传参
import requests
url='http://testingedu.com.cn:8000/index.php'
data={
'username':'13800138006',
'password': '123456',
' verify_code':'nkpv'
}
re=requests.get(url=url,params=data)
print(re.text)
请求参数类型:content-type: application/x-www-form-urlencoded*
传递表单参数,使用data传递
#通过data关键字进行传参
import requests
url='http://testingedu.com.cn:8000/index.php'
data={
'username':'13800138006',
'password': '123456',
' verify_code':'nkpv'
}
re=requests.post(url=url,data=data)
print(re.text)
请求参数类型:Content-Type:Application/json
传递json参数,使用json传递
#通过json关键字进行传参
import requests
url='http://testingedu.com.cn:8000/index.php'
data={
'username':'13800138006',
'password': '123456',
' verify_code':'nkpv'
}
re=requests.post(url=url,json=data)
print(re.text)
请求参数类型:content-type:application/form-data
文件参数使用files传递:
{“参数名”:(“文件路径”,open以rb模式打开文件)}
import requests
url = 'http://192.168.200.10:9751/light/excelData'
#注意文件的名称和参数
data = {
'file': open(r'E:\网页下载\信号灯.xlsx','rb') #使用rb二进制方式打开文件
}
re=requests.post(url=url,files=data) #使用files传递文件
print(re.json())
get请求通过params传递参数。
post请求通过json或者data传参。data和json两者之间的区别:
data:
数据报文:dict字典类型,那么默认情况下请求头:application/x-www-form-urlencoded,表示以form表单的方式传参,格式:a=1&b=2&c=3
数据报文:str类型,那么默认情况下:text/plain(如果是字典格式需要转换成字符串格式传参)
json:
数据报文:不管是dict还是str类型,默认都是application/json,格式{"a":1,"b":2,"c":3}
json.dumps(data) 序列化 把字典格式的数据转换成str
json.loads(data) 反序列化 把str格式转换成字典格式
总结:
post传参时,data只能传简单的只有键值对的dict或者是str格式。json一般只能传dict格式(简单和嵌套都可以)
添加请求头参数时,需传递一个字典类型的数据给headers参数
headers={"Content-Type":"application/json"}
response = requests.get(url, headers=headers)
rep = requests.request()
#返回字符串的数据
print(rep.text)
#返回字节格式的数据
print(rep.content)
#返回字典格式的数据
print(rep.json())
#状态码
print(rep.status_code)
#返回状态信息
print(rep.reason)
#返回cookie信息
print(rep.cookies)
#返回编码格式
print(rep.encoding)
#返回响应头
print(rep.headers)
获取响应数据中的cookie,下次请求时通过cookie传参
import requests
url='http://testingedu.com.cn:8000/index.php'
data={
'username':'13800138006',
'password': '123456',
' verify_code':'nkpv'
}
re=requests.post(url=url,json=data)
#获取登录成功后返回的cookie信息
cookies=re.cookies
order_url = r'http://testingedu.com.cn:8000/index.php?m=Home&c=Cart&a=header_cart_list'
#传入cookie
response = requests.get(url=order_url, cookies= cookies)
print(response.text)
在多个请求之间存储数据并自动添加数据,如cookie
import requests
#实例化
session=requests.Session()
url='http://testingedu.com.cn:8000/index.php'
data={
'username':'13800138006',
'password': '123456',
' verify_code':'nkpv'
}
#session发起请求
re=session.post(url=url,json=data)
cookies=re.cookies
order_url = r'http://testingedu.com.cn:8000/index.php?m=Home&c=Cart&a=header_cart_list'
#不需要手动传递cookie
response = session.get(url=order_url)
print(response.text)