requests观看笔记
http请求
话说htto请求有哪些呢
嗯:GET方法
requests.get(url)
这个会返回
状态码 status_code
响应体 text
Cookie
等这些信息
get请求加指定参数
params参数,是个字典键值对,然后加在requests.get()中即可
若是想看返回的信息,可以将其转换为json格式
就是直接r.json # 估计哪个网站可以直接返回json格式把
不用的话,就要把返回的对象转换为json格式
HTTP请求头
添加的话还是用headers
二进制数据
只要返回个r.content即可
写入的话,也就是f.write(r.content)
POST请求
指定的是data参数
响应数据
requests提供了一个code对象,可以直接查看状态码对应的标识(一个字符串),在<requests根目录目录>/requests/status_codes.py
上传文件
采用的是Post方法的files参数,files参数的值可以是BufferedReader对象,该对象可以用Python语言的内置函数open返回;就是一个字典形式,file为键的字典,值为打开一个文件的对象。
如:
files1 = {'file':open('1.png','rb')}
r1 = requests.post('http://127.0.0.1:5000', files=files1)
cookie
传cookie在请求中有2种方式
第一种:直接在headers参数种加Cookie,这个一般都是直接在网站上获取Cookie然后赋值过来粘贴在那的
第二种:
另外的途径获得Cookie,然后采用
jar = requests.cookies.RequestsCookieJar()
然后用set方法cookie的键值写入
维持同一会话
可以使用requests.Session()赋值给一个对象,然后改对象再用get请求方式请求url,这样下次请求时就有改cookie字段在返回的响应体中
身份验证
使用from requests.auth import HTTPBasicAuth,
然后再请求中加入验证的字段(一般这字段需要自己去抓包分析)
auth=HTTPBasicAuth('bill','1234') # 这里验证的是两个字符串
r = requests.get('http://localhost:5000',auth=HTTPBasicAuth('bill','1234'))
与urllib对比,相当简介,urllib进行身份认证时候需要使用一大堆类
将请求打包
在使用urllib中将请求打包,也就是将所有要发送给服务端的请求信息都放到Request对象中,然后直接发送这个对象即可。requests也可以完成同样的工作。
在requests中也有一个Request类,用于封装请求信息,然后调用Session的prepare_request方法处理Request对象,并返回一个requests.models.Response对象,最后通过Session.send方法发送Response对象。
这样发送回来个响应,这个响应和之前的一样。request.get(url)
打包
req = Request('post',url,data=data,headers=headers)
发送
prepared = session.prepare_request(req)
r = session.send(prepared)