python中requests如何使用

发布时间:2021-07-05 14:48:14 作者:Leah
来源:亿速云 阅读:227
# Python中requests如何使用

## 1. 什么是requests库

`requests`是Python中最流行的HTTP客户端库之一,以简洁优雅的API设计著称。它是对Python标准库`urllib`的封装,提供了更人性化的接口,支持HTTP连接保持、会话保持、文件上传、自动内容解码等高级功能。

主要特点:
- 支持HTTP/1.1和HTTPS
- 支持连接池和持久连接
- 支持文件上传(multipart/form-data)
- 自动解压响应内容
- 支持国际化域名和URL
- 支持会话和Cookie持久化

安装方式:
```bash
pip install requests

2. 基本请求方法

2.1 GET请求

import requests

# 基本GET请求
response = requests.get('https://api.example.com/data')

# 带参数的GET请求
params = {'key1': 'value1', 'key2': 'value2'}
response = requests.get('https://api.example.com/data', params=params)

# 获取响应内容
print(response.text)  # 文本内容
print(response.json())  # JSON内容
print(response.status_code)  # 状态码

2.2 POST请求

# 基本POST请求
data = {'key': 'value'}
response = requests.post('https://api.example.com/post', data=data)

# 发送JSON数据
json_data = {'key': 'value'}
response = requests.post('https://api.example.com/post', json=json_data)

# 文件上传
files = {'file': open('report.xls', 'rb')}
response = requests.post('https://api.example.com/upload', files=files)

2.3 其他HTTP方法

# PUT请求
response = requests.put('https://api.example.com/put', data={'key': 'value'})

# DELETE请求
response = requests.delete('https://api.example.com/delete')

# HEAD请求
response = requests.head('https://api.example.com/get')

# OPTIONS请求
response = requests.options('https://api.example.com/get')

3. 高级用法

3.1 请求头设置

headers = {
    'User-Agent': 'Mozilla/5.0',
    'Accept': 'application/json',
    'Authorization': 'Bearer token123'
}
response = requests.get('https://api.example.com/data', headers=headers)

3.2 Cookie处理

# 发送Cookie
cookies = {'key': 'value'}
response = requests.get('https://api.example.com/cookies', cookies=cookies)

# 接收Cookie
print(response.cookies['example_cookie_name'])

3.3 超时设置

# 设置超时时间(秒)
try:
    response = requests.get('https://api.example.com/data', timeout=3)
except requests.exceptions.Timeout:
    print("请求超时")

3.4 会话保持

# 使用Session对象保持会话
session = requests.Session()

# 会话会保持Cookie和连接
session.get('https://api.example.com/login', params={'user': 'name', 'pass': 'word'})
response = session.get('https://api.example.com/dashboard')

3.5 代理设置

proxies = {
    'http': 'http://10.10.1.10:3128',
    'https': 'http://10.10.1.10:1080',
}
response = requests.get('https://api.example.com/data', proxies=proxies)

4. 响应处理

4.1 响应内容

response = requests.get('https://api.example.com/data')

# 文本响应
print(response.text)

# 二进制响应
print(response.content)

# JSON响应
print(response.json())

# 原始响应
print(response.raw)

4.2 响应头

print(response.headers)
print(response.headers['Content-Type'])

4.3 状态码检查

if response.status_code == 200:
    print("成功")
elif response.status_code == 404:
    print("未找到")

5. 错误处理

try:
    response = requests.get('https://api.example.com/data', timeout=5)
    response.raise_for_status()  # 如果状态码不是200,抛出HTTPError异常
except requests.exceptions.HTTPError as errh:
    print("HTTP错误:", errh)
except requests.exceptions.ConnectionError as errc:
    print("连接错误:", errc)
except requests.exceptions.Timeout as errt:
    print("超时错误:", errt)
except requests.exceptions.RequestException as err:
    print("请求异常:", err)

6. 实际应用示例

6.1 调用REST API

def get_weather(city):
    url = f"https://api.weather.com/v1/cities/{city}/forecast"
    response = requests.get(url)
    return response.json()

weather_data = get_weather('beijing')

6.2 下载文件

url = "https://example.com/bigfile.zip"
response = requests.get(url, stream=True)

with open('bigfile.zip', 'wb') as f:
    for chunk in response.iter_content(chunk_size=1024):
        if chunk:
            f.write(chunk)

6.3 表单提交

login_data = {
    'username': 'user123',
    'password': 'pass123'
}
response = requests.post('https://example.com/login', data=login_data)

7. 性能优化建议

  1. 使用会话(Session)对象重用TCP连接
  2. 对于大文件下载使用stream=True
  3. 合理设置超时时间
  4. 考虑使用连接池适配器
  5. 启用HTTP持久连接

8. 总结

requests库极大简化了Python中的HTTP请求处理,通过简洁的API实现了复杂的功能。无论是简单的网页抓取还是复杂的API交互,requests都能提供优雅的解决方案。掌握requests库是Python开发者必备的技能之一。 “`

推荐阅读:
  1. python中requests库使用
  2. Python中如何使用requests方法

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

python requests

上一篇:微信小程序中movable view移动图片和双指缩放的示例分析

下一篇:微信小程序中如何解决IOS和Android兼容的问题

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》