Requests库快速入门指南:Python HTTP请求的优雅解决方案

Requests库快速入门指南:Python HTTP请求的优雅解决方案

requests A simple, yet elegant, HTTP library. requests 项目地址: https://gitcode.com/gh_mirrors/re/requests

Requests是Python中最受欢迎的HTTP客户端库之一,它提供了简洁直观的API,让HTTP请求变得异常简单。本文将带你快速掌握Requests的核心功能。

准备工作

在开始之前,请确保:

  1. 已安装Requests库
  2. 使用的是最新版本

发起HTTP请求

Requests支持所有常见的HTTP方法,使用方式高度一致:

import requests

# GET请求
r = requests.get('https://api.example.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参数传递

构建带查询参数的URL时,Requests可以自动处理参数编码:

payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.get('https://httpbin.org/get', params=payload)
print(r.url)  # 输出: https://httpbin.org/get?key1=value1&key2=value2

参数值可以是列表,Requests会自动处理多值情况:

payload = {'key1': 'value1', 'key2': ['value2', 'value3']}
r = requests.get('https://httpbin.org/get', params=payload)
print(r.url)  # 输出: https://httpbin.org/get?key1=value1&key2=value2&key2=value3

响应内容处理

Requests会自动解码响应内容,支持多种编码格式:

r = requests.get('https://api.example.com/events')
print(r.text)  # 获取文本内容
print(r.encoding)  # 查看当前编码
r.encoding = 'ISO-8859-1'  # 修改编码

对于二进制内容:

print(r.content)  # 获取二进制内容

# 处理二进制数据示例(如图片)
from PIL import Image
from io import BytesIO
i = Image.open(BytesIO(r.content))

对于JSON响应,Requests内置了解码器:

print(r.json())  # 获取JSON格式数据

高级请求特性

自定义请求头

headers = {'user-agent': 'my-app/0.0.1'}
r = requests.get('https://api.example.com/some/endpoint', headers=headers)

复杂POST请求

表单数据提交:

payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.post('https://httpbin.org/post', data=payload)

JSON数据提交:

import json
payload = {'some': 'data'}
r = requests.post('https://api.example.com/some/endpoint', json=payload)

文件上传

files = {'file': open('report.xls', 'rb')}
r = requests.post('https://httpbin.org/post', files=files)

可以自定义文件名和内容类型:

files = {'file': ('report.xls', open('report.xls', 'rb'), 'application/vnd.ms-excel', {'Expires': '0'})}
r = requests.post('https://httpbin.org/post', files=files)

响应处理

状态码检查

r = requests.get('https://httpbin.org/get')
print(r.status_code)  # 200
print(r.status_code == requests.codes.ok)  # True

# 错误处理
bad_r = requests.get('https://httpbin.org/status/404')
bad_r.raise_for_status()  # 抛出HTTPError异常

响应头信息

print(r.headers)
print(r.headers['Content-Type'])
print(r.headers.get('content-type'))  # 头部名称不区分大小写

Cookies处理

# 获取Cookies
url = 'http://example.com/some/cookie/setting/url'
r = requests.get(url)
print(r.cookies['example_cookie_name'])

# 发送Cookies
cookies = dict(cookies_are='working')
r = requests.get('https://httpbin.org/cookies', cookies=cookies)

重定向与超时

重定向处理

r = requests.get('http://github.com/')
print(r.url)  # 'https://github.com/'
print(r.history)  # 重定向历史记录

# 禁用重定向
r = requests.get('http://github.com/', allow_redirects=False)
print(r.status_code)  # 301

超时设置

# 设置超时时间为1秒
requests.get('https://github.com/', timeout=1)

# 注意:timeout不是整个下载的时间限制,而是服务器响应的等待时间

总结

Requests库通过简洁的API设计,极大地简化了Python中的HTTP请求操作。本文介绍了最常用的功能,包括:

  1. 各种HTTP方法的调用
  2. 参数传递和编码处理
  3. 响应内容的多种处理方式
  4. 自定义请求头和Cookies
  5. 文件上传和复杂POST请求
  6. 重定向控制和超时设置

掌握这些核心功能后,你就能应对大多数HTTP请求场景。Requests的优雅设计让网络请求变得简单而直观,是Python开发者不可或缺的工具。

requests A simple, yet elegant, HTTP library. requests 项目地址: https://gitcode.com/gh_mirrors/re/requests

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程倩星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值