requests 进阶
时间: 2024-07-25 15:00:21 浏览: 97
`requests`是一个非常流行的Python库,用于发送HTTP请求,非常适合进行API交互和数据抓取。以下是一些requests库的进阶内容:
1. **会话管理(Session)**:requests中的Session对象可以保存cookies和auth信息,这样可以在整个会话中保持登录状态,提高效率。例如:
```python
import requests
s = requests.Session()
s.get('https://example.com/login', auth=('username', 'password'))
response = s.get('https://protected_area.com')
```
2. **参数编码和文件上传**:你可以使用`data`或`files`参数来发送POST请求,其中`data`用于URL编码的数据,`files`用于上传二进制文件:
```python
params = {'key': 'value'}
response = requests.post('https://upload-api.example.com', params=params, files={'file': open('file.txt', 'rb')})
```
3. **重定向处理**:默认情况下,requests会自动处理HTTP状态码为3xx的重定向。如果需要自定义重定向策略,可以使用`allow_redirects`参数:
```python
response = requests.get('http://example.com/redirect', allow_redirects=False)
```
4. **异常处理**:requests返回的是一个`Response`对象,可以通过检查其`status_code`属性来判断请求是否成功。如果失败,可以捕获`requests.exceptions.RequestException`来处理错误:
```python
try:
response = requests.get('http://nonexistent.url')
except requests.exceptions.RequestException as e:
print(f"Request failed: {e}")
```
5. **设置超时和代理**:可以使用`timeout`参数设置连接和读取超时时间,`proxies`参数设置代理服务器:
```python
response = requests.get('http://example.com', timeout=10, proxies={'http': 'http://proxy.example.com'})
```
阅读全文