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在请求中有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)

posted @ 2021-10-04 10:16  索匣  阅读(12)  评论(0编辑  收藏  举报