在Python的世界里,进行网络请求是一项常见的任务。无论是从API获取数据,还是与Web服务交互,一个强大而灵活的库是必不可少的。requests
模块就是这样一个库,它以其简洁的API和强大的功能,成为了Python开发者的首选。本文将带你深入了解requests
模块,让你在网络请求中游刃有余。
为什么选择requests?
在requests
出现之前,Python中进行HTTP请求的主流库是urllib
。然而,urllib
的API复杂且难以使用。requests
的出现改变了这一局面,它提供了一个更人性化的接口,让发送HTTP请求变得简单直观。
安装requests
使用requests
之前,你需要先安装它。如果你还没有安装,可以通过pip轻松安装:
pip install requests
基本用法
发送GET请求
发送一个GET请求是最简单的操作之一。以下是一个基本的示例:
import requests
response = requests.get('https://api.github.com')
print(response.status_code) # 200
print(response.json()) # 打印JSON响应内容
发送POST请求
POST请求通常用于提交数据。以下是如何发送一个POST请求的示例:
import requests
url = 'https://httpbin.org/post'
data = {'key': 'value'}
response = requests.post(url, data=data)
print(response.text)
其他HTTP方法
requests
支持所有主要的HTTP方法,如PUT、DELETE、HEAD等:
response = requests.put(url, data={'key': 'value'})
response = requests.delete(url)
response = requests.head(url)
requests 方法如下表:
高级用法
会话和连接池
requests
支持会话(Session)对象,它允许你跨请求保持某些参数,并且使用连接池提高性能。
s = requests.Session()
s.headers.update({'x-test': 'true'})
response = s.get('https://httpbin.org/get')
响应内容
requests
提供了多种方式来处理响应内容。除了.json()
方法外,你还可以获取文本或二进制内容:
text = response.text
html = response.html # 需要安装lxml或html5lib
content = response.content
异常处理
网络请求可能会遇到各种问题,requests
提供了异常处理机制:
try:
response = requests.get('https://nonexistent.url')
except requests.exceptions.RequestException as e:
print(e)
超时设置
设置超时可以防止程序无限期地等待响应:
response = requests.get('https://api.github.com', timeout=0.01)
代理和认证
requests
还支持代理和HTTP认证:
proxies = {
'http': 'http://10.10.1.10:3128',
'https': 'http://10.10.1.10:1080',
}
auth = ('user', 'pass')
response = requests.get('https://api.github.com', proxies=proxies, auth=auth)
结语
requests
模块以其简洁和强大,成为了Python中进行网络请求的首选工具。它不仅简化了HTTP请求的过程,还提供了丰富的功能来处理各种复杂的网络交互场景。掌握requests
,将极大地提高你的开发效率和代码质量。