request API
模块
- *requests.request(method, url, *kwargs)
- *requests.get(url, params=None, *kwargs)
- *requests.options(url, *kwargs)
- *requests.head(url, *kwargs)
- *requests.post(url, data=None, json=None, *kwargs)
- *requests.put(url, data=None, *kwargs)
- *requests.patch(url, data=None, *kwargs)
- *requests.delete(url, *kwargs)
除了 requests.request()
外,其余 7 个方法与 http 协议中的请求方法一一对应。这 7 个方法其实都是在调用 requests.request()
方法
method | 简述 |
---|---|
url | 请求的 url |
params | 请求携带的 params |
data | 请求 body 中的 data |
json | 请求 body 中的 json 格式的 data |
headers | 请求携带的 headers |
cookies | 请求携带的 cookies |
files | 上传文件时使用 |
auth | 身份认证时使用 |
timeout | 设置请求的超时时间,可以设置连接超时和读取超时 |
allow_redirects | 是否允许重定向,默认 True,即允许重定向 |
proxies | 设置请求的代理,支持 http 代理以及 socks 代理(需要安装第三方库 "pip install requests[socks]") |
verify | 用于 https 请求时的 ssl 证书验证,默认是开启的,如果不需要则设置为 False 即可 |
stream | 是否立即下载响应内容,默认是 False,即立即下载响应内容 |
cert | 用于指定本地文件用作客户端证书 |
基本调用
import requests
r = requests.request('get','https://api.github.com/events')
r = requests.get('https://api.github.com/events')
r = requests.post('http://httpbin.org/post', data = {'key':'value'})
r = requests.put('http://httpbin.org/put', data = {'key':'value'})
r = requests.delete('http://httpbin.org/delete')
r = requests.head('http://httpbin.org/get')
r = requests.options('http://httpbin.org/get')
返回 Response
对象
params
接受一个字典,用于传递 URL 参数
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.get("http://httpbin.org/get", params=payload)
print(r.url)
输出
http://httpbin.org/get?key1=value1&key2=value2
headers
接受一个字典,用于传递 header 参数(请求头)
url = 'https://tophub.today/n/mproPpoq6O'
headers = {
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36'
}
s = requests.get(url,headers=headers)
data
用于 POST 请求中,传递请求体中的 data 参数
该网站可以判断如果请求是 POST 方式,就把相关请求信息返回
data = {'name': 'germey', 'age': '22'}
r = requests.post("http://httpbin.org/post", data=data)
print(r.text)
输出
{
"args": {},
"data": "",
"files": {},
"form": {
"age": "22",
"name": "germey"
},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Content-Length": "18",
"Content-Type": "application/x-www-form-urlencoded",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.25.0",
"X-Amzn-Trace-Id": "Root=1-5fe43f55-5d4750b76935f7515662c3b3"
},
"json": null,
"origin": "59.79.2.148",
"url": "http://httpbin.org/post"
}
json
用于 POST 请求中,传递请求体中 json 格式的的 data 参数
files
上传文件
import requests
files = {'file': open('favicon.ico', 'rb')}
r = requests.post("http://httpbin.org/post", files=files)
print(r.text)
cookies
用于传递 cookies 参数,不过将 cookies 写在 headers 中比较方便
import requests
r = requests.get("https://www.baidu.com")
print(r.cookies)
for key, value in r.cookies.items():
print(key + '=' + value)
输出
<RequestsCookieJar[<Cookie BDORZ=27315 for .baidu.com/>]>
BDORZ=27315
步骤
- 调用 cookies 属性,得到 Cookies,可以发现它是 RequestCookieJar 类型
- 用 items()方法将其转化为元组组成的列表,遍历输出每一个 Cookie 的名称和值,实现 Cookie 的遍历解析
verify
用于 https 请求时的 ssl 证书验证,默认是开启的,如果不需要则设置为 False 即可
例:请求一个 HTTPS 站点,但是证书验证错误的页面时,把 verify 参数设置为 False
import requests
response = requests.get('https://www.12306.cn', verify=False)
print(response.status_code)