程序员文章、书籍推荐和程序员创业信息与资源分享平台

网站首页 > 技术文章 正文

请求模块requests库基本使用

hfteth 2025-03-03 18:44:20 技术文章 12 ℃

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请求的需求。通过学习和掌握这些函数和属性的用法,可以更加高效地进行网络请求和数据获取。

最近发表
标签列表