requests介绍_2.02
requests在本文件中的1.26中有涉及到
一、什么是requests库
requests 是用于http请求的模块,比urllib更加方便
二、requests主要功能
(1)requests.request()
先看一下requests库下api.py文件中关于reques函数解释:
method:GET、HEAD、POST、PUT、PATCH等
url:用于访问的链接
**kwargs:控制访问的参数
1、params:字典或字节序列,作为参数增加到url中,例如:
2、data:字典,字节序或文件对象,重点作为向服务器提供或提交资源是提交,作为request的内容,与params不同的是,data提交的数据并不放在url链接里,而是放在url链接对应位置的地方作为数据来储存。它可以接受一个字符串对象。例如:
3、json:json格式的数据,json合适在相关的html,http相关的web开发中非常常见的,也是http最经常使用的数据格式,他是作为内容部分可以向服务器提交。例如:
此处除了可以自行对 dict 进行编码,你还可以使用 json 参数直接传递,然后它就会被自动编码。例如:
kv = {‘key1’: ‘value1’}
r = requests.request(‘POST’, ‘http://python123.io/ws‘, json=kv)
4、headers:字典是http的相关语,对应了某个url访问时所发起的http的头字段,可以用这个字段来定义http的访问的http头,可以用来模拟任何我们想模拟的浏览器来对url发起访问。例如:
5、files:字典,是用来向服务器传输文件时使用的字段。例如:
(2)requests.get()
先看一下requests库文件下对get函数的介绍。
可以看到get函数就相当于reques函数的method参数为get。所以对于get函数的其他参数同上边介绍的一样。例如:
运行结果:
http://www.baidu.com/s?wd=Python
(3)requests.post()
同样post函数的本质也是在调用request函数。
从两个数的定义上来看因为调用request的参数不同(一个是params一个是data)导致了get和post的不同
(4)requests.head()
4.response
前面说完了请求,下面说一下相应response。
(1)response.apparent_encoding
(2)response.content
(3)response.encoding
这个和上边的response.apparent_encoding的结果可能相同也可能不同。
不同:
结果为:ISO-8859-1
结果为:utf-8
相同:
结果为:UTF-8
结果为:utf-8
(4)response.status_code
(5)response.text
(6)response.json()
注:
如果 JSON 解码失败, r.json() 就会抛出一个异常。例如,响应内容是 401 (Unauthorized),尝试访问 r.json() 将会抛出 ValueError: No JSON object could be decoded 异常。
需要注意的是,成功调用 r.json() 并**不**意味着响应的成功。有的服务器会在失败的响应中包含一个 JSON 对象(比如 HTTP 500 的错误细节)。这种 JSON 会被解码返回。要检查请求是否成功,请使用 r.raise_for_status() 或者检查 r.status_code 是否和你的期望相同。