首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Python requests库用法详解

Python requests库用法详解

作者头像
用户11081884
发布2026-07-20 17:16:42
发布2026-07-20 17:16:42
150
举报

RequestsPython语言编写的一个优雅而简单的HTTP库,基于urllib3构建,采用Apache2 Licensed开源协议。它比Python内置的urllib模块更加方便易用,能够极大地简化HTTP请求操作,完全满足HTTP开发测试需求。

Requests库的主要特点:

  • 简单易用的API设计
  • 自动处理URL编码
  • 支持HTTP连接保持和连接池
  • 支持文件分块上传
  • 支持国际化URL和POST数据
  • 支持自动解压响应内容

安装Requests库

代码语言:javascript
复制
pip install requests

1 GET请求

代码语言:javascript
复制
import requests

# 基本GET请求
response = requests.get(' https://www.example.com ')
print(response.status_code)  # 打印状态码
print(response.text)  # 打印响应内容

# 带参数的GET请求
params = {'key1': 'value1', 'key2': 'value2'}
response = requests.get(' https://httpbin.org/get ', params=params)
print(response.url)  # 查看实际请求的URL

2 POST请求

代码语言:javascript
复制
import requests

# 基本POST请求
data = {'username': 'admin', 'password': '123456'}
response = requests.post(' https://httpbin.org/post ', data=data)
print(response.json())

# 发送JSON数据
json_data = {'key': 'value'}
response = requests.post(' https://httpbin.org/post ', json=json_data)
print(response.json())

3 其他HTTP方法

代码语言:javascript
复制
import requests

# PUT请求
response = requests.put(' https://httpbin.org/put ', data={'key': 'value'})

# DELETE请求
response = requests.delete(' https://httpbin.org/delete ')

# HEAD请求
response = requests.head(' https://httpbin.org/get ')

# OPTIONS请求
response = requests.options(' https://httpbin.org/get ')

4 自定义请求头

代码语言:javascript
复制
import requests

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)',
    'Accept-Language': 'en-US,en;q=0.9',
    'Referer': ' https://www.google.com/ '
}

response = requests.get(' https://httpbin.org/headers ', headers=headers)
print(response.json())

5 处理响应内容

代码语言:javascript
复制
import requests

response = requests.get(' https://httpbin.org/get ')

# 获取响应状态码
print(response.status_code)

# 获取响应头
print(response.headers)

# 获取响应内容为文本
print(response.text)

# 获取响应内容为JSON
print(response.json())

# 获取原始响应内容
print(response.content)

# 获取响应编码
print(response.encoding)

6 处理Cookies

代码语言:javascript
复制
import requests

# 获取Cookies
response = requests.get(' https://www.example.com ')
print(response.cookies)

# 发送Cookies
cookies = {'key': 'value'}
response = requests.get(' https://httpbin.org/cookies ', cookies=cookies)
print(response.json())

7 会话保持

代码语言:javascript
复制
import requests

# 创建会话对象
session = requests.Session()

# 使用会话发送请求
session.get(' https://httpbin.org/cookies/set/sessioncookie/123456789 ')
response = session.get(' https://httpbin.org/cookies ')

print(response.json())

8 代理设置

代码语言:javascript
复制
import requests

proxies = {
    'http': ' http://10.10.1.10:3128 ',
    'https': ' http://10.10.1.10:1080 ',
}

response = requests.get(' https://httpbin.org/ip ', proxies=proxies)
print(response.json())

9 超时设置

代码语言:javascript
复制
import requests
from requests.exceptions import Timeout

try:
    response = requests.get(' https://httpbin.org/delay/3 ', timeout=2.5)
    print(response.status_code)
except Timeout:
    print('请求超时')

10 文件上传

代码语言:javascript
复制
import requests

files = {'file': open('example.txt', 'rb')}
response = requests.post(' https://httpbin.org/post ', files=files)
print(response.json())

11 SSL证书验证

代码语言:javascript
复制
import requests

# 禁用SSL证书验证
response = requests.get(' https://example.com ', verify=False)

# 使用自定义证书
response = requests.get(' https://example.com ', cert=('/path/client.cert', '/path/client.key'))

12 异常处理

代码语言:javascript
复制
import requests
from requests.exceptions import RequestException

try:
    response = requests.get(' https://example.com ', timeout=5)
    response.raise_for_status()  # 如果响应状态码不是200,抛出HTTPError异常
except requests.exceptions.HTTPError as errh:
    print(f"HTTP错误: {errh}")
except requests.exceptions.ConnectionError as errc:
    print(f"连接错误: {errc}")
except requests.exceptions.Timeout as errt:
    print(f"超时错误: {errt}")
except requests.exceptions.RequestException as err:
    print(f"其他错误: {err}")

13 流式下载大文件

代码语言:javascript
复制
import requests

url = ' https://example.com/large-file.zip '
response = requests.get(url, stream=True)

with open('large-file.zip', 'wb') as f:
    for chunk in response.iter_content(chunk_size=8192):
        if chunk:
            f.write(chunk)

14 进度条显示

代码语言:javascript
复制
import requests
from tqdm import tqdm

url = ' https://example.com/large-file.zip '
response = requests.get(url, stream=True)

total_size = int(response.headers.get('content-length', 0))
block_size = 1024  # 1KB
progress_bar = tqdm(total=total_size, unit='iB', unit_scale=True)

with open('large-file.zip', 'wb') as f:
    for data in response.iter_content(block_size):
        progress_bar.update(len(data))
        f.write(data)
progress_bar.close()

15 身份验证

代码语言:javascript
复制
import requests
from requests.auth import HTTPBasicAuth

# 基本认证
response = requests.get(' https://api.example.com/data ', 
                       auth=HTTPBasicAuth('username', 'password'))

# 或简写为
response = requests.get(' https://api.example.com/data ', 
                       auth=('username', 'password'))

16 获取二进制数据

代码语言:javascript
复制
import requests

# 下载图片
response = requests.get(' https://www.python.org/static/img/python-logo.png ')

# 保存二进制数据
with open('python-logo.png', 'wb') as f:
    f.write(response.content)

17 性能优化

代码语言:javascript
复制
import requests

# 使用连接池
session = requests.Session()
adapter = requests.adapters.HTTPAdapter(
    pool_connections=10,
    pool_maxsize=10,
    max_retries=3
)
session.mount(' http://', adapter)
session.mount(' https://', adapter)

response = session.get(' https://example.com ')

18 实际应用示例

调用REST API

代码语言:javascript
复制
import requests

def get_github_user(username):
    url = f' https://api.github.com/users/ {username}'
    response = requests.get(url)
    if response.status_code == 200:
        return response.json()
    else:
        return None

user_data = get_github_user('octocat')
print(user_data)

网页爬虫示例

代码语言:javascript
复制
import requests
from bs4 import BeautifulSoup

def scrape_website(url):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'
    }
    response = requests.get(url, headers=headers)
    soup = BeautifulSoup(response.text, 'html.parser')
    
    # 提取所有链接
    links = [a['href'] for a in soup.find_all('a', href=True)]
    return links

links = scrape_website(' https://www.python.org ')
print(links[:5])  # 打印前5个链接

Requests库是Python中最受欢迎的HTTP客户端库之一,它提供了简洁而强大的API来处理HTTP请求。本文介绍了Requests库的基本用法和高级功能,包括各种HTTP方法的使用、请求头和Cookies的处理、会话维持、代理设置、文件上传等。掌握这些知识后将能够轻松地在Python项目中处理各种HTTP请求场景。

“无他,惟手熟尔”!有需要的用起来。

如果你觉得这篇文章有用,欢迎点赞、转发、收藏、留言、推荐❤!😊

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-08-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Nicholas与Pypi 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装Requests库
    • 1 GET请求
    • 2 POST请求
    • 3 其他HTTP方法
    • 4 自定义请求头
    • 5 处理响应内容
    • 6 处理Cookies
    • 7 会话保持
    • 8 代理设置
    • 9 超时设置
    • 10 文件上传
    • 11 SSL证书验证
  • 12 异常处理
    • 13 流式下载大文件
    • 14 进度条显示
    • 15 身份验证
    • 16 获取二进制数据
  • 17 性能优化
  • 18 实际应用示例
    • 调用REST API
    • 网页爬虫示例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档