import requests
引入requests,发送请求,我们就可以开始使用requests来请求服务器
r=requests.get("https://api.github.com/events")
现在我们就要有响应体变量:r,我们可以通过这个变量来获取响应的内容,对于request是支持多种请求方式的:POST,PUT,DELETE,HEAD,OPTIONS等:
r=requests.put("xxxxxxx/put",dat={xxx:xxx})
r=requests.delete("xxxxxxxx/delete")
r=requests.head("xxxxxxxxxxxx")
r=request.options("xxxxxxxxxxxxxxxx")
对于参数的传递我们只有需要传递:params的关键字,requests会自动完成httpbin.org/get?key=val的参数传递:
r=requests.get("http://localhost:8080/home",params={"key":"val"})
print(r.url) '''你可以打印看到这个转为:http://localhost:8080/home?key=val '''
对于响应体数据:text获取值的时候,一般requests设置默认的:utf-8的编码格式,如果我们想获取响应内容指定为另外一种编码格式:
r.encoding="ISO-8859-1"
print(r.text) '''这个时候,text的编码格式就是:ISO-8859-1'''
requests对于响应体的数据:
r.json() '''这个是支持服务器返回的数据是JSON'''
如果是字节流数据:
from PIL import Image
from io import BytesIO,StringIO
i=Image.open(BytesIO(r.content)) '''完成字节流数据的接收'''
如果我们是请求的TCP、Socket返回的响应的时候,我是需要在请求的加上:stream=True,一般情况先我们是需要将文件流写入到文件中去的,因此我们需要特别注意的要点是:
1.使用响应的:iter_content来处理r.raw的数据
2.指定chunk_size的大小
r=request.get("http://192.168.29.111:8080/evnent",stream=True)
r.raw
with open(filename,'wb') as fd:
for item in r.iter_content(chunk_size=128):
fd.write(item)
说了这么多,其实对于我们在B/S的应用中,我们的请求头内容是很多的,在使用requests框架的时候,我们需要特别指定请求头的内容,requests也是支持我们在需要的情况下指定我们的请求头:
header={"Content-Encoding":"gzip","Content-Type":"text/html; charset=UTF-8"}
r=request.get("http://localhost:8080/event",headers=header)
我们也需要注意的是:我们自定义的请求头数据的是低于我们更具体的头信息数据的
我们知道我们使用requests发送请求的可以使用:params来完成参数传递,但是对于提交的数据量很大的时候,我们就需要切换:data参数属性来完成
r=request.post("xxxxxx",json={},data={}) '''这个情况下,json属性传递的数据会被忽略'''
'''因此我们需要切换'''
import json
r=request.post("xxxxxx",data=json.dumps({"xxxx":"xxxx"}))
requests上传文件也是很简单的:
files = {'file': ('report.xls', open('report.xls', 'rb'), 'application/vnd.ms-excel', {'Expires': '0'})}
r=request.post("xxxx",files=files)
对于上传文件的时候,我们也需要特别注意的就是,我们请求头的:Content-Length,你需要处理一下