python requests 模块

2025-1-7 杜世伟 Python

requests 是 Python 中一个非常流行的用于发送 HTTP 请求的模块。它提供了一个简单易用的接口,可以用来发送各种类型的 HTTP 请求(如 GET、POST、PUT、DELETE 等),并处理响应数据。

以下是 requests 模块的主要功能和常见用法:

安装 requests
如果尚未安装,可以使用以下命令安装:

pip install requests


常见用法
1. 发送 GET 请求
     1. requests.get函数是Python requests库中的一个方法,用于发送HTTP GET请求。其基本语法如下:
         response = requests.get(url, params=None, **kwargs)
         url:需要发送GET请求的URL地址。
         params:可选参数,用于在URL中添加查询字符串参数,参数应以字典形式传递。
         **kwargs:其他可选参数,如headers、timeout等,用于控制请求的其他方面。
    2. requests.get函数的返回值内容
         requests.get函数返回一个Response对象,该对象包含了服务器对请求的响应。Response对象包含以下常用属性和方法:

        status_code:HTTP响应状态码(如200表示成功)。
        text:响应内容的字符串表示,自动根据响应头中的字符编码进行解码。
        content:响应内容的原始字节串,不会自动解码。
        json():如果响应内容是JSON格式,该方法会将其解析为Python字典或列表。
        headers:一个字典,包含服务器响应的所有头部信息。
        url:最终响应的URL(可能经过重定向)。
        encoding:响应内容的编码格式。
        cookies:从响应头中提取的cookie信息。
        elapsed:从发送请求到接收响应所花费的时间(timedelta对象)。
    3. 如何处理requests.get的返回值
        处理requests.get的返回值通常涉及以下几个步骤:

        获取响应状态码,检查请求是否成功。
        根据需要获取响应内容(文本、字节串或JSON)。
        处理响应头或其他响应信息。


    requests.get函数范例

import requests

response = requests.get('https://jsonplaceholder.typicode.com/posts/1')
print(response.status_code)  # 状态码
print(response.text)         # 响应文本
print(response.json())       # 如果返回 JSON 数据,可以用 .json() 方法解析



2. 发送 POST 请求
data = {'title': 'foo', 'body': 'bar', 'userId': 1}
response = requests.post('https://jsonplaceholder.typicode.com/posts', json=data)
print(response.status_code)
print(response.json())

3. 自定义 Headers

headers = {'Authorization': 'Bearer YOUR_TOKEN'}
response = requests.get('https://api.example.com/data', headers=headers)
print(response.json())

4. 发送带参数的请求
params = {'q': 'python', 'sort': 'stars'}
response = requests.get('https://api.github.com/search/repositories', params=params)
print(response.json())

5. 上传文件
python
复制代码
files = {'file': open('example.txt', 'rb')}
response = requests.post('https://example.com/upload', files=files)
print(response.status_code)

6. 设置超时
response = requests.get('https://example.com', timeout=5)  # 设置超时时间为 5 秒

7. 处理重定向
默认情况下,requests 会自动处理重定向:

response = requests.get('http://github.com')  # 自动跳转到 https://github.com
print(response.url)  # 重定向后的 URL

可以通过设置 allow_redirects=False 禁用自动重定向:

response = requests.get('http://github.com', allow_redirects=False)
8. 发送带认证的请求

from requests.auth import HTTPBasicAuth

response = requests.get('https://api.example.com/basic-auth', auth=HTTPBasicAuth('user', 'pass'))
print(response.status_code)
捕获异常
使用 try-except 来处理网络请求中的异常:

try:
    response = requests.get('https://example.com', timeout=5)
    response.raise_for_status()  # 检查 HTTP 状态码
    print(response.json())
except requests.exceptions.Timeout:
    print('请求超时')
except requests.exceptions.RequestException as e:
    print(f'请求失败: {e}')

常用的 requests 方法
requests.get(url, params=None, **kwargs):发送 GET 请求。
requests.post(url, data=None, json=None, **kwargs):发送 POST 请求。
requests.put(url, data=None, **kwargs):发送 PUT 请求。
requests.delete(url, **kwargs):发送 DELETE 请求。
requests.head(url, **kwargs):发送 HEAD 请求。
requests.options(url, **kwargs):发送 OPTIONS 请求。
requests 是一个功能强大、简单易用的 HTTP 库,适合绝大多数 HTTP 请求场景。

标签: python get post requests

Powered by emlog 沪ICP备2023034538号-1