news 2026/1/18 9:17:09

Python 中的 Requests 库:轻松进行 HTTP 请求

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python 中的 Requests 库:轻松进行 HTTP 请求

什么是 Requests?

Requests是一个用 Python 编写的开源 HTTP 客户端库,由 Kenneth Reitz 创建并维护。它的设计哲学是“为人类设计”,强调代码的可读性和易用性。使用 Requests,你可以用几行代码完成复杂的 HTTP 操作。

“Requests is the only Non-GMO HTTP library for Python, safe for human consumption.”
—— 官方网站(https://requests.readthedocs.io)

安装 Requests

Requests 不是 Python 标准库的一部分,因此需要通过pip安装:

pip install requests

安装完成后,在 Python 脚本中导入即可使用:

import requests

基本用法

1. 发送 GET 请求

GET 请求是最常见的 HTTP 方法,用于从服务器获取数据。

response = requests.get('https://httpbin.org/get') print(response.status_code) # 输出状态码,如 200 print(response.text) # 输出响应文本

你也可以传递查询参数(query parameters):

params = {'name': 'Alice', 'age': 25} response = requests.get('https://httpbin.org/get', params=params) print(response.url) # https://httpbin.org/get?name=Alice&age=25

2. 发送 POST 请求

POST 请求常用于提交表单或发送数据到服务器。

data = {'username': 'Bob', 'password': '123456'} response = requests.post('https://httpbin.org/post', data=data) print(response.json()) # 将响应解析为 JSON

如果要发送 JSON 数据,可以使用json参数:

json_data = {'title': 'Hello', 'body': 'World'} response = requests.post('https://httpbin.org/post', json=json_data)

3. 处理响应内容

Requests 提供了多种方式来处理服务器返回的数据:

  • response.text:以字符串形式返回响应内容(自动解码)。
  • response.content:以字节形式返回原始内容,适合下载图片、文件等。
  • response.json():将响应解析为 Python 字典或列表(要求响应是合法 JSON)。
  • response.status_code:HTTP 状态码(如 200、404、500)。
  • response.headers:响应头信息,是一个字典。

示例:下载一张图片

response = requests.get('https://example.com/image.jpg') with open('image.jpg', 'wb') as f: f.write(response.content)

高级功能

1. 自定义请求头

你可以通过headers参数设置自定义请求头,比如伪装成浏览器访问:

headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36' } response = requests.get('https://httpbin.org/headers', headers=headers) print(response.json())

2. 使用 Cookie 和 Session

对于需要保持登录状态的场景,可以使用Session对象:

session = requests.Session() session.post('https://httpbin.org/login', data={'user': 'admin'}) # 后续请求会自动携带 Cookie response = session.get('https://httpbin.org/dashboard')

3. 处理超时和异常

网络请求可能因网络问题失败,建议设置超时时间并捕获异常:

try: response = requests.get('https://httpbin.org/delay/2', timeout=3) except requests.exceptions.Timeout: print("请求超时") except requests.exceptions.RequestException as e: print(f"请求出错: {e}")

4. 上传文件

使用files参数可以轻松上传文件:

files = {'file': open('report.pdf', 'rb')} response = requests.post('https://httpbin.org/post', files=files)

实际应用示例

假设我们要从 GitHub API 获取某个用户的公开信息:

import requests def get_github_user(username): url = f'https://api.github.com/users/{username}' response = requests.get(url) if response.status_code == 200: user = response.json() print(f"用户名: {user['login']}") print(f"公开仓库数: {user['public_repos']}") print(f"关注者: {user['followers']}") else: print("用户未找到") get_github_user('octocat')

总结

Requests 是 Python 中最流行的 HTTP 库之一,以其简洁的语法和强大的功能赢得了广大开发者的喜爱。它极大地简化了网络请求的编写过程,使开发者能够专注于业务逻辑而非底层细节。

主要优点:

  • 语法简洁,易于学习和使用
  • 支持各种 HTTP 方法和特性(如 Sessions、Cookies、文件上传等)
  • 社区活跃,文档完善
  • 广泛应用于爬虫、API 调用、自动化测试等领域

参考资料:

  • 官方文档:https://requests.readthedocs.io
  • GitHub 项目:https://github.com/psf/requests
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/16 6:39:01

Stable Diffusion WebUI完全指南:零基础变身AI绘画大师

Stable Diffusion WebUI完全指南:零基础变身AI绘画大师 【免费下载链接】stable-diffusion-webui AUTOMATIC1111/stable-diffusion-webui - 一个为Stable Diffusion模型提供的Web界面,使用Gradio库实现,允许用户通过Web界面使用Stable Diffus…

作者头像 李华
网站建设 2026/1/16 6:38:27

防撤回工具全面解析:三步构建消息保护屏障

防撤回工具全面解析:三步构建消息保护屏障 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了) 项目地址: https://gitcode.com/GitHub_Tr…

作者头像 李华
网站建设 2026/1/16 6:38:23

智能文献管理革命:让你的学术资料井井有条

智能文献管理革命:让你的学术资料井井有条 【免费下载链接】zotero-style zotero-style - 一个 Zotero 插件,提供了一系列功能来增强 Zotero 的用户体验,如阅读进度可视化和标签管理,适合研究人员和学者。 项目地址: https://gi…

作者头像 李华
网站建设 2026/1/17 17:45:30

鸣潮游戏自动化工具配置全攻略:智能挂机轻松上手

鸣潮游戏自动化工具配置全攻略:智能挂机轻松上手 【免费下载链接】ok-wuthering-waves 鸣潮 后台自动战斗 自动刷声骸上锁合成 自动肉鸽 Automation for Wuthering Waves 项目地址: https://gitcode.com/GitHub_Trending/ok/ok-wuthering-waves 还在为重复刷…

作者头像 李华
网站建设 2026/1/16 6:37:42

PingFangSC字体包:跨平台字体一致性终极指南

PingFangSC字体包:跨平台字体一致性终极指南 【免费下载链接】PingFangSC PingFangSC字体包文件、苹果平方字体文件,包含ttf和woff2格式 项目地址: https://gitcode.com/gh_mirrors/pi/PingFangSC 在数字化体验日益重要的今天,字体显示…

作者头像 李华
网站建设 2026/1/16 6:37:36

3步搞定微信QQ消息防撤回:完整操作指南

3步搞定微信QQ消息防撤回:完整操作指南 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了) 项目地址: https://gitcode.com/GitHub_Trend…

作者头像 李华