requests支持HTTP的POST, GET, PUT,DELETE,HEAD 以及 OPTIONS等请求方式
所有的请求方式都相同,下面以requers.get的方式为例讲解
1. GET方式
requests.get(url,
params=None,
data=None,
headers=None,
cookies=None,
files=None,
auth=None,
timeout=None,
allow_redirects: bool = True,
proxies=None,
hooks=None,
stream=None,
verify=None,
cert=None,
json=None)
url
请求的链接params
在GET请求方法中,我们一般将参数以查询字符串的形式传递给 URL 链接(一般用在get请求方式中)
url = "http://httpbin.org/get?key1=vlaue1&key2=value2"
r = requests.get(url)
# 也可直接使用如下方式
url = "http://httpbin.org/get"
param = {"key1":value1, "key2":value2}
r = requests.get(url, params=param)
data
json
POST和PUT等方法中,如果我们需要传输大量的数据(比如图片上传、文件上传、修改文档等)给网站服务器,就需要将其单独携带在HTTP请求中。requests提供了2种参数来支持我们在HTTP请求中传输消息主体:
(1)data:接受一个字典、列表、元组、字节和类文件对象;
(2)json:接受一个json参数,请求将会序列化这个数据,并添加一个请求头;headers
请求头,一般是一个dicttimeout
为防止服务器不能及时响应,大部分对外部服务器的请求都应该带着 timeout 参数,用来指定如果超多多久服务器没响应,则终止请求,请求超时会报错,应当使用try… exceptproxies
使用代理
其他参数一般用的很少
requests.post()及其他方式参数与上面get相同,只是需要注意的是get方式传参数使用params, 而post使用data或json
2. 处理响应
requests提供了3种响应形式供我们选择和使用:
r.content
:原始的响应主体字节;会乱码,使用r.content.decode("utf-8")
解码r.text
:经过编码后的响应主体字符串;.json()
:经过JSON处理的响应主体;
import requests
import json
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.get("https://www.bkqs.com.cn/")
print("content方式结果:", r.content)
print("text方式结果:", r.text)
print(r.json())
.content结果
.text结果
3. 其他方法
import requests
import json
r = requests.get("https://www.bkqs.com.cn/")
print("url", r.url)
print("状态码", r.status_code)