requests 库是 Python 中用于发送 HTTP 请求的一个强大且简单易用的库。它支持多种 HTTP 方法(如 GET、POST、PUT、DELETE 等),并且有丰富的功能来处理响应数据。以下是 requests 库的基本使用方法:
一、安装
首先,你需要安装 requests 库。如果你还没有安装,可以使用以下命令通过 pip 安装:
Bash
pip install requests
二、基本用法
1. 发送 GET 请求
Bash
import requests
# 发送 GET 请求
response = requests.get('https://api.example.com/data')
# 获取响应状态码
print(response.status_code)
# 获取响应内容(文本格式)
print(response.text)
# 获取响应内容(JSON 格式,如果服务器返回的是 JSON 数据)
print(response.json())
2. 发送 POST 请求
import requests
# 定义要发送的数据
data = {
'key1': 'value1',
'key2': 'value2'
}
# 发送 POST 请求
response = requests.post('https://api.example.com/submit', data=data)
# 获取响应状态码
print(response.status_code)
# 获取响应内容
print(response.text)
3. 发送带有请求头的请求
import requests
# 定义请求头
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer your_token_here'
}
# 发送 GET 请求并附带请求头
response = requests.get('https://api.example.com/protected', headers=headers)
# 获取响应内容
print(response.text)
4. 发送带有查询参数的请求
import requests
# 定义查询参数
params = {
'search': 'keyword',
'sort': 'asc'
}
# 发送 GET 请求并附带查询参数
response = requests.get('https://api.example.com/search', params=params)
# 获取响应内容
print(response.text)
5. 发送带有 JSON 数据的 POST 请求
import requests
# 定义 JSON 数据
json_data = {
'name': 'John Doe',
'age': 30
}
# 发送 POST 请求并附带 JSON 数据
response = requests.post('https://api.example.com/users', json=json_data)
# 获取响应内容
print(response.text)
6. 处理异常
import requests
try:
response = requests.get('https://api.example.com/data')
response.raise_for_status() # 如果响应状态码不是 200,则抛出 HTTPError 异常
print(response.text)
except requests.exceptions.HTTPError as errh:
print("Http Error:", errh)
except requests.exceptions.ConnectionError as errc:
print("Error Connecting:", errc)
except requests.exceptions.Timeout as errt:
print("Timeout Error:", errt)
except requests.exceptions.RequestException as err:
print("OOps: Something Else", err)
7.额外功能
- 会话对象:使用 requests.Session() 可以创建会话对象,用于跨请求保持某些参数(如 cookies 和 headers)。
- 超时设置:可以在请求中设置超时时间,如 requests.get('url', timeout=5)。
- 代理设置:可以通过 proxies 参数设置代理,如 proxies={'http': 'http://10.10.1.10:3128', 'https': 'http://10.10.1.10:1080'}。
三、requests模块常用函数介绍
requests模块是Python中一个非常流行的HTTP库,用于发送HTTP请求并获取响应。它提供了简洁易用的API,使得发送HTTP请求变得简单快捷。以下是对requests模块中一些常用函数的介绍:
1. requests.request()
- 功能:构造一个请求,用以支撑其他方法的基础方法。
- 参数:
method:HTTP方法(如GET、POST等)。url:请求的URL。params:可选,URL的额外参数,字典或字节流格式。其他**kwargs参数:用于控制访问的各种参数,如headers(请求头)、cookies(Cookie信息)、auth(认证信息)、timeout(超时时间)等。
2. requests.get()
- 功能:发送GET请求,获取HTML网页的主要方法。
- 参数:
- url:请求的URL。
- params:可选,URL的额外参数,字典或字节流格式。
- 其他**kwargs参数:如headers、cookies、timeout等。
3. requests.post()
- 功能:发送POST请求,向HTML网页提交数据。
- 参数:
- url:请求的URL。
- data:可选,表单数据,字典、字节流或文件对象格式。
- json:可选,JSON格式的数据,自动设置Content-Type: application/json。
- 其他**kwargs参数:如headers、cookies、timeout等。
4. requests.put()
- 功能:发送PUT请求,向HTML网页提交局部修改请求。
- 参数:
- url:请求的URL。
- data:可选,要提交的数据,字典、字节流或文件对象格式。
- 其他**kwargs参数:如headers、cookies等。
5. requests.delete()
- 功能:发送DELETE请求,向HTML页面提交删除请求。
- 参数:
- url:请求的URL。
- 其他**kwargs参数:如headers、cookies等。
6. requests.head()
- 功能:发送HEAD请求,获取HTML网页头信息。
- 参数:
- url:请求的URL。
- 其他**kwargs参数:如headers、cookies等。
7. requests.options()
- 功能:发送OPTIONS请求,用于描述目标资源的通信选项。
- 参数:
- url:请求的URL。
- 其他**kwargs参数:如headers、cookies等。
8. requests.session()
- 功能:创建一个会话对象,用于在多个请求中共享参数(如Cookie)。
9. Response对象属性
当发送请求后,requests库会返回一个Response对象,该对象包含了很多有用的属性和方法,用于获取响应的详细信息。例如:
- status_code:HTTP请求的返回状态码(如200表示成功,404表示未找到)。
- text:HTTP响应内容的字符串形式。
- content:HTTP响应内容的二进制形式。
- headers:返回响应头信息,是一个字典类型。
- cookies:返回响应的Cookie信息,是一个字典类型。
- json():如果响应内容是JSON格式,可以使用此方法将其解析为Python字典。
- encoding:返回响应内容的编码格式。
- url:返回请求的URL地址。
- history:返回请求历史,是一个列表类型,其中每个元素都是一个Response对象(用于重定向跟踪)。
10. 异常处理
requests库还提供了一套异常处理机制,用于处理在发送请求过程中可能出现的各种异常。例如:
- requests.ConnectionError:网络连接错误异常(如拒绝连接等)。
- requests.HTTPError:HTTP错误异常(如4XX或5XX状态码)。
- requests.URLRequired:URL缺失异常。
- requests.TooManyRedirects:超过最大重定向次数异常。
- requests.ConnectTimeout:连接远程服务器超时异常。
- requests.Timeout:请求超时异常(包括连接超时和读取超时)。
总之,requests模块是一个功能强大且易于使用的HTTP库,它提供了丰富的函数和属性来满足各种HTTP请求的需求。通过学习和掌握这些函数和属性的用法,可以更加高效地进行网络请求和数据获取。