Requests库详细介绍
安装
使用pip安装requests
库:
pip install requests
基本用法
requests
库提供了简洁的API来处理HTTP请求。以下是使用requests
库进行不同HTTP请求的示例:
import requests
# 发送GET请求
r = requests.get('https://api.github.com/events')
# 发送POST请求
r = requests.post('https://httpbin.org/post', data={'key': 'value'})
# 发送PUT请求
r = requests.put('https://httpbin.org/put', data={'key': 'value'})
# 发送DELETE请求
r = requests.delete('https://httpbin.org/delete')
# 发送HEAD请求
r = requests.head('https://httpbin.org/get')
# 发送OPTIONS请求
r = requests.options('https://httpbin.org/get')
在URL中传递参数
可以通过params
参数将查询参数附加到URL中:
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.get('https://httpbin.org/get', params=payload)
# 输出拼接后的URL
print(r.url)
# https://httpbin.org/get?key1=value1&key2=value2
响应内容
获取服务响应内容:
import requests
r = requests.get('https://api.github.com/events')
print(r.text) # 输出响应内容(JSON格式)
可以更改响应的编码:
r.encoding = 'ISO-8859-1'
二进制响应内容
如果响应内容是二进制数据,可以使用r.content
获取:
r.content # 返回二进制内容
JSON响应内容
直接将响应解析为JSON:
import requests
r = requests.get('https://api.github.com/events')
r.json() # 返回JSON格式的Python对象
自定义请求头
可以通过headers
参数设置自定义请求头:
url = 'https://api.github.com/some/endpoint'
headers = {'user-agent': 'my-app/0.0.1'}
r = requests.get(url, headers=headers)
POST请求传递表单数据
使用data
参数传递表单数据:
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.post('https://httpbin.org/post', data=payload)
传递文件
上传文件:
url = 'https://httpbin.org/post'
files = {'file': open('report.xls', 'rb')}
r = requests.post(url, files=files)
响应状态代码
可以通过r.status_code
获取HTTP状态码:
r = requests.get('https://httpbin.org/get')
print(r.status_code) # 返回状态码,如200
处理Cookies
访问响应中的Cookies:
url = 'http://example.com/some/cookie/setting/url'
r = requests.get(url)
r.cookies['example_cookie_name']
可以通过cookies
参数向服务器发送自定义Cookies:
url = 'https://httpbin.org/cookies'
cookies = {'cookies_are': 'working'}
r = requests.get(url, cookies=cookies)
print(r.text)
超时
可以通过timeout
参数设置请求超时时间:
requests.get('https://github.com/', timeout=0.001)
Session对象
Session
对象允许在多个请求之间持久化参数(如Cookie),并提高性能。
s = requests.Session()
s.get('https://httpbin.org/cookies/set/sessioncookie/123456789')
r = s.get('https://httpbin.org/cookies')
print(r.text) # 显示会话中的Cookies
代理
使用代理发送请求:
proxies = {
'http': 'http://10.10.1.10:3128',
'https': 'http://10.10.1.10:1080',
}
r = requests.get('http://example.org', proxies=proxies)
可以为整个会话配置代理:
s = requests.Session()
s.proxies.update(proxies)
s.get('http://example.org')
流式请求
对于大文件或流式API,可以使用stream=True
参数推迟下载响应内容:
r = requests.get('https://httpbin.org/stream/20', stream=True)
for line in r.iter_lines():
if line:
print(line)
SSL证书验证
默认情况下,requests
会验证HTTPS请求的SSL证书。如果需要忽略SSL证书,可以设置verify=False
:
requests.get('https://kennethreitz.org', verify=False)
或者使用自定义的证书文件:
requests.get('https://github.com', verify='/path/to/certfile')
总结
requests
库提供了一个简单易用的接口来处理HTTP请求。它的功能涵盖了基本的HTTP请求、文件上传、Cookie处理、SSL证书验证等多种场景,是Python开发中必备的工具之一。