Requests库快速入门指南:Python HTTP请求的优雅实现

Requests库快速入门指南:Python HTTP请求的优雅实现

requests requests 项目地址: https://gitcode.com/gh_mirrors/req/requests

Requests是Python中最受欢迎的HTTP客户端库之一,它以简洁优雅的API设计著称,让HTTP请求变得异常简单。本文将带你快速掌握Requests的核心功能。

准备工作

在开始之前,请确保:

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

发起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'})

# 其他HTTP方法
r = requests.put('https://httpbin.org/put', data={'key': 'value'})
r = requests.delete('https://httpbin.org/delete')
r = requests.head('https://httpbin.org/get')
r = requests.options('https://httpbin.org/get')

URL参数传递

构建带查询参数的URL时,可以使用params参数自动编码:

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会自动解码服务器返回的内容:

r = requests.get('https://api.example.com/events')
print(r.text)  # 获取文本内容
print(r.content)  # 获取二进制内容
print(r.json())  # 获取JSON格式内容

编码处理

Requests会根据HTTP头部自动猜测编码,你也可以手动指定:

print(r.encoding)  # 查看当前编码
r.encoding = 'ISO-8859-1'  # 修改编码

高级请求功能

自定义请求头

headers = {'user-agent': 'my-app/0.0.1'}
r = requests.get(url, 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(url, data=json.dumps(payload))

# 更简单的方式(requests 2.4.2+)
r = requests.post(url, json=payload)

文件上传

files = {'file': open('report.xls', 'rb')}
r = requests.post(url, files=files)

响应处理

状态码检查

r = requests.get('https://httpbin.org/get')
print(r.status_code)  # 200
r.raise_for_status()  # 如果状态码表示错误,抛出异常

响应头

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

Cookies

# 获取Cookies
print(r.cookies['example_cookie'])

# 发送Cookies
cookies = dict(cookies_are='working')
r = requests.get(url, cookies=cookies)

重定向与历史记录

Requests默认会跟随重定向:

r = requests.get('http://example.com')
print(r.url)  # 最终URL
print(r.history)  # 重定向历史

禁用重定向:

r = requests.get('http://example.com', allow_redirects=False)

超时设置

为防止程序挂起,建议总是设置超时:

requests.get('https://example.com', timeout=3)  # 3秒超时

总结

Requests库通过简洁的API设计,让Python中的HTTP请求变得异常简单。本文介绍了从基本请求到高级功能的核心用法,掌握这些内容后,你就能应对大多数HTTP请求场景了。对于更复杂的需求,Requests还提供了会话保持、代理设置等高级功能,值得进一步探索。

requests requests 项目地址: https://gitcode.com/gh_mirrors/req/requests

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

羿漪沁Halbert

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

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

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

打赏作者

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

抵扣说明:

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

余额充值