熟悉python接口自动化的同学,应该对requests库有一定的了解,requests库的设计理念,让这个库的使用非常简单易学。
requests的口号:让HTTP服务人类。本人介绍requests常用的API。
安装
pip install requests
发送请求
import requests
url='https://www.baidu.com'
r=requests.get(url=url) #其它方法等同,如 r=requests.post(url=url)
#r是response对象
print(f"请求地址:{r.url}\n请求方式:{r.request.method}\n请求头:{r.request.headers}\n请求正文:{r.request.body}\n响应头:{r.headers}\n响应正文:{r.text}\n")
传递查询参数
以字典的方式传递查询参数,即url地址的第五个部分组成。
import requests
url='https://www.baidu.com'
params={'a':1,"b":2} #以字典的方式传递
r=requests.get(url=url,params=params)
print(f"请求地址:{r.url}\n请求方式:{r.request.method}\n请求头:{r.request.headers}\n请求正文:{r.request.body}\n响应头:{r.headers}\n响应正文:{r.text}\n")
处理响应乱码
使用r.encoding改变编码规则
import requests
url='https://www.baidu.com'
params={'a':1,"b":2} #以字典的方式传递
r=requests.get(url=url,params=params)
print(r.encoding) #获取编码
r.encoding='utf-8' #改变编码,永久改变,requests对象都会使用新值
print(f"请求地址:{r.url}\n请求方式:{r.request.method}\n请求头:{r.request.headers}\n请求正文:{r.request.body}\n响应头:{r.headers}\n响应正文:{r.text}\n")
入参是urlencoded的表单数据
import requests
url='http://www.shopxo.com/shopxo/index.php?s=/index/user/login.html'
data={
'accounts':'test1',
'pwd':'123456'
}
r=requests.post(url=url,data=data)
print(f"请求地址:{r.url}\n请求方式:{r.request.method}\n请求头:{r.request.headers}\n请求正文:{r.request.body}\n响应头:{r.headers}\n响应正文:{r.text}\n")
入参是json
import requests
url='http://www.shopxo.com/shopxo/index.php?s=/index/user/login.html'
json={
'accounts':'test1',
'pwd':'123456'
}
r=requests.post(url=url,json=json)
print(f"请求地址:{r.url}\n请求方式:{r.request.method}\n请求头:{r.request.headers}\n请求正文:{r.request.body}\n响应头:{r.headers}\n响应正文:{r.text}\n")
发送定制头
import requests
url='http://www.shopxo.com/shopxo/index.php?s=/index/user/login.html'
headers={
"X-Requested-With":"XMLHttpRequest"
}
r=requests.post(url=url,headers=headers)
print(f"请求地址:{r.url}\n请求方式:{r.request.method}\n请求头:{r.request.headers}\n请求正文:{r.request.body}\n响应头:{r.headers}\n响应正文:{r.text}\n")
出参是json,解析成python的字典
import requests
url='http://www.shopxo.com/shopxo/index.php?s=/index/user/login.html'
headers={
"X-Requested-With":"XMLHttpRequest"
}
data={
"accounts":'test1',
'pwd':'123456'
}
r=requests.post(url=url,headers=headers,data=data)
# print(type(r.text)) #r.text返回字符串
# print(type(r.json())) #r.json()返回字典,后续提取键值方便
print(f"请求地址:{r.url}\n请求方式:{r.request.method}\n请求头:{r.request.headers}\n请求正文:{r.request.body}\n{'-'*200}\n响应头:{r.headers}\n响应正文:{r.json()}\n")
form-data格式上传文件
请求头的Content-Type是form-data格式
'Content-Type': 'multipart/form-data; boundary=6d7aa68692da60ca157e6d3cbfb9940b'
import requests
from pprint import pprint
url='http://www.shopxo.com/shopxo/index.php?s=/index/user/login.html'
files={
'file':open('case.xlsx','rb')
}
r=requests.post(url=url,files=files)
print(f"请求地址:{r.url}\n请求方式:{r.request.method}\n请求头:{r.request.headers}\n请求正文:{r.request.body}\n{'-'*555}\n响应头:{r.headers}\n响应正文:{r.text}\n")
获取响应的cookies
import requests
from pprint import pprint
url='http://www.shopxo.com/shopxo/index.php?s=/index/user/login.html'
data={
'accounts':'test1',
'pwd':'123456'
}
headers={
'X-Requested-With':'XMLHttpRequest'
}
r=requests.post(url=url,data=data,headers=headers)
print(type(r.cookies))
print(r.cookies['PHPSESSID']) #通过cookie的name获取
发送cookies
import requests
from pprint import pprint
url='https://www.baidu.com'
cookies={
'PHPSESSID':'12345'
}
r=requests.post(url=url,cookies=cookies)
print(f"请求地址:{r.url}\n请求方式:{r.request.method}\n请求头:{r.request.headers}\n请求正文:{r.request.body}\n{'-'*555}\n响应头:{r.headers}\n响应正文:{r.text}\n")
网友评论