pin_drop当前位置:知识文库 ❯ 图文
requests库简介与安装教程 - Python HTTP请求入门指南
一、requests库概述
requests库是Python中最流行的第三方HTTP库,由Kenneth Reitz开发,以"HTTP for Humans"为口号。它基于urllib3构建,提供了简洁优雅的API,让发送HTTP请求变得极其简单。requests库支持HTTP/1.1协议的全部方法,自动处理编码、连接池、持久连接、Cookie持久化等底层细节,是Web爬虫、API调用、自动化测试等场景的首选工具。
与Python标准库中的urllib相比,requests的API设计更加人性化。你不需要手动处理URL编码、请求头拼接或响应解码,requests会自动为你完成这些繁琐的工作。这也是为什么requests成为了Python生态中下载量最大的第三方库之一。
二、安装与导入方法
requests是第三方库,不属于Python标准库,需要通过包管理工具进行安装。以下是几种常见的安装方式:
安装完成后,通过 import requests 即可导入使用:
代码示例
import requests
# 查看版本号
print(f"requests版本: {requests.__version__}")
# 查看安装路径
print(f"安装路径: {requests.__file__}")
# 查看版权信息
print(f"版权: {requests.__copyright__}")输出:
代码示例
requests版本: 2.31.0
安装路径: C:\Python39\lib\site-packages\requests\__init__.py
版权: Copyright 2023 Kenneth Reitz三、核心功能与常用方法
requests库提供了完整的HTTP方法支持,以下是其核心功能模块:
HTTP请求方法
-
requests.get():发送GET请求,用于获取资源
-
requests.post():发送POST请求,用于提交数据
-
requests.put():发送PUT请求,用于全量更新资源
-
requests.patch():发送PATCH请求,用于部分更新资源
-
requests.delete():发送DELETE请求,用于删除资源
-
requests.head():发送HEAD请求,获取响应头信息
-
requests.options():发送OPTIONS请求,获取服务器支持的HTTP方法
核心类与对象
-
Session:会话对象,用于跨请求保持Cookie和连接
-
Response:响应对象,包含服务器返回的所有信息
-
Request:请求对象,用于构建自定义请求
-
PreparedRequest:预准备请求对象
常用异常类
-
RequestException:所有请求异常的基类
-
ConnectionError:连接错误异常
-
Timeout:请求超时异常
-
HTTPError:HTTP响应错误异常
-
URLRequired:URL缺失异常
四、代码示例详解
示例1:查看requests模块的完整功能清单
通过反射机制,可以查看requests库提供的所有HTTP方法和核心组件:
代码示例
import requests
# 列出主要的HTTP方法
http_methods = ['get', 'post', 'put', 'patch', 'delete', 'head', 'options']
print("=== HTTP请求方法 ===")
for method in http_methods:
func = getattr(requests, method)
print(f" requests.{method}() - {func.__doc__.strip().split(chr(10))[0] if func.__doc__ else '无文档'}")
# 列出核心类和对象
print("\n=== 核心类 ===")
core_classes = ['Session', 'Response', 'Request', 'PreparedRequest', 'CookieJar']
for cls_name in core_classes:
if hasattr(requests, cls_name):
print(f" requests.{cls_name}")
# 列出异常类
print("\n=== 常用异常 ===")
exceptions = ['RequestException', 'ConnectionError', 'Timeout', 'HTTPError', 'URLRequired']
for exc_name in exceptions:
if hasattr(requests.exceptions, exc_name):
print(f" requests.exceptions.{exc_name}")输出:
代码示例
=== HTTP请求方法 ===
requests.get() - Sends a GET request.
requests.post() - Sends a POST request.
requests.put() - Sends a PUT request.
requests.patch() - Sends a PATCH request.
requests.delete() - Sends a DELETE request.
requests.head() - Sends a HEAD request.
requests.options() - Sends a OPTIONS request.
=== 核心类 ===
requests.Session
requests.Response
requests.Request
requests.PreparedRequest
requests.CookieJar
=== 常用异常 ===
requests.exceptions.RequestException
requests.exceptions.ConnectionError
requests.exceptions.Timeout
requests.exceptions.HTTPError
requests.exceptions.URLRequired示例2:发送第一个GET请求
代码示例
import requests
# 发送GET请求到测试服务器
response = requests.get('https://httpbin.org/get')
# 查看响应状态码
print(f"状态码: {response.status_code}")
# 查看响应编码
print(f"编码: {response.encoding}")
# 查看响应内容类型
print(f"内容类型: {response.headers.get('Content-Type')}")
# 查看响应文本前100个字符
print(f"响应内容: {response.text[:100]}")输出:
代码示例
状态码: 200
编码: utf-8
内容类型: application/json
响应内容: {
"args": {},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Host": "httpbin.org"小贴士
httpbin.org 是一个免费的HTTP请求测试服务,由Kenneth Reitz(requests作者)创建。它可以回显你发送的请求信息,非常适合用于调试和测试HTTP请求。在开发过程中,建议多用httpbin.org来验证你的请求是否正确。
五、实际应用场景
-
Web爬虫开发:使用requests获取网页HTML内容,配合BeautifulSoup或lxml解析数据,是Python爬虫的标准技术栈
-
第三方API调用:调用天气API、地图API、支付接口、社交媒体API等,通过GET获取数据或通过POST提交数据
-
自动化接口测试:对Web服务接口进行功能验证和回归测试,验证接口返回的状态码、响应数据和业务逻辑是否正确
-
微服务间通信:在分布式系统中,服务之间通过HTTP接口进行数据交互和远程调用
-
自动化运维脚本:监控服务器状态、调用云服务商API管理资源、发送告警通知等
六、注意事项与最佳实践
第三方库:requests库需要通过
pip install requests安装,不属于Python标准库SSL证书验证:生产环境中应设置
verify=True(默认值)确保HTTPS通信安全,不要随意设置verify=False
七、HTTP库对比
Python生态中有多个HTTP客户端库,各有适用场景。了解它们的差异有助于选择最适合项目的工具:
八、课后练习
练习1
安装requests库,并编写程序打印其版本号和安装路径
练习2
使用requests.get()访问 https://httpbin.org/get,打印响应的状态码和响应头信息
练习3
编写程序,使用try-except捕获requests可能抛出的ConnectionError异常,并给出友好的错误提示
常见问题
requests库和urllib有什么区别?
urllib是Python标准库,无需安装但API繁琐;requests是第三方库,需要pip安装但API极其简洁。requests底层基于urllib3构建,自动处理编码、Cookie、连接池等细节,开发效率远高于urllib。
requests支持异步请求吗?
requests本身不支持异步。如果需要异步HTTP请求,可以使用httpx(API与requests类似,支持async/await)或aiohttp(基于asyncio的异步HTTP框架)。
如何查看requests的版本号?
可以通过 requests.__version__ 查看版本号,或者在命令行中使用 pip show requests 命令查看。
verify=False有什么安全风险?
设置verify=False会跳过SSL证书验证,容易受到中间人攻击(MITM)。在生产环境中应始终使用verify=True,如果证书有问题应通过verify参数指定CA证书路径,而不是禁用验证。
本文涉及AI创作
内容由AI创作,请仔细甄别