news 2026/1/13 12:57:05

10.2 Requests库入门

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
10.2 Requests库入门

文章目录

  • 前言
  • 一、Requests简介
  • 二、 快速上手
    • 2.1 发送请求
    • 2.2 传递参数
    • 2.3 响应内容
    • 2.4 自定义请求头
    • 2.5 重定向与历史记录
    • 2.6 错误与异常处理

前言

爬虫本质上是一种自动化程序,它通过模拟客户端向服务器发送网络请求,获取响应数据,并依据预设规则对数据进行解析与存储。在 Python 生态中,提及爬虫便不得不提及其核心库之一 —— Requests。


一、Requests简介

根据官方文档的描述:
Requests 是唯一一个非转基因的 Python HTTP 库,可供人类安全使用。
警告:非专业使用其他 HTTP 库可能导致危险的副作用,包括但不限于:安全缺陷、冗余代码、重复造轮子、啃文档、抑郁、头痛,甚至死亡。
这段介绍生动地概括了 Requests 库的特点,此处不再赘述。安装方式为在终端中执行命令:pip install requests。

二、 快速上手

2.1 发送请求

首先导入 Requests 模块:

pythonimportrequests

发起一个 GET 请求获取网页:

python r=requests.get('http://xxx.xxx')

此时我们获得了一个 Response 对象 r,可通过它进一步获取响应信息。Requests 提供了直观的 API 来支持常见 HTTP 方法,示例如下:

python r=requests.head('http://xxx.xxx/get')r=requests.post('http://xxx.xxx/post',data={'key':'value'})r=requests.put('http://xxx.xxx/put',data={'key':'value'})r=requests.delete('http://xxx.xxx/delete')

通常建议为请求设置超时时间,通过 timeout 参数指定(单位为秒):

python r=requests.head('http://xxx.xxx/get',timeout=1)

2.2 传递参数

使用 GET 请求时,参数通常以键值对形式附在 URL 问号之后,如 http://xxx.xxx/get?key=val。Requests 支持通过 params 参数以字典形式传入参数:

python params={'key1':'val1','key2':'val2'}r=requests.get("http://xxx.xxx/get",params=params)

也支持将列表作为值传入:

python params={'key1':'val1','key2':['val2','val3']}

注:字典中值为 None 的键不会被添加到 URL 查询字符串中。

2.3 响应内容

获取服务器返回的内容,以 https://api.github.com 为例:

pythonimportrequests r=requests.get('https://api.github.com')print(r.text)# 输出示例:# {"current_user_url":"https://api.github.com/user","current_user...

访问 r.text 时,Requests 会自动推测编码格式,可通过 r.encoding 查看或修改:

python r.encoding='GBK'# 修改编码
  1. 二进制内容
    如图片等二进制数据,可通过 r.content 获取:
pythonfromPILimportImagefromioimportBytesIO i=Image.open(BytesIO(r.content))
  1. JSON 内容
    Requests 内置了 JSON 解码器,可方便地解析 JSON 响应:
pythonimportrequests r=requests.get('https://api.github.com')data=r.json()

注意:调用 r.json() 成功并不代表请求成功。某些服务器可能在错误响应中也返回 JSON 数据(如 HTTP 500 错误信息)。因此建议通过 r.status_code(状态码 200 表示成功)或 r.raise_for_status()(成功时返回 None)进一步验证。

2.4 自定义请求头

如需添加请求头,可通过 headers 参数传入字典:

python url='http://xxx.xxx'headers={'user-agent':'xxx'}r=requests.get(url,headers=headers)

注意:自定义请求头的优先级低于某些特定配置。例如,若在 .netrc 中设置了认证信息,通过 headers 设置的 Authorization 将不会生效;若使用 auth 参数,则 .netrc 的配置将被覆盖。所有请求头值必须为字符串、字节串或 Unicode(通常不建议使用 Unicode)。

2.5 重定向与历史记录

默认情况下,Requests 会自动处理除 HEAD 外的所有重定向。可通过 history 属性查看重定向历史,该列表按请求时间从晚到早排序:

pythonimportrequests r=requests.get('http://github.com')print(r.history)# 输出示例:[<Response [301]>]

若需禁用重定向,可在 GET、POST、PUT、DELETE、OPTIONS、PATCH 请求中设置 allow_redirects=False:

python r=requests.get('http://xxx.xxx',allow_redirects=False)

2.6 错误与异常处理

网络问题(如 DNS 失败、连接拒绝)会抛出 ConnectionError;
HTTP 返回非成功状态码时,Response.raise_for_status() 会抛出 HTTPError;
请求超时会抛出 Timeout;
超过最大重定向次数会抛出 TooManyRedirects。
所有 Requests 显式抛出的异常均继承自 requests.exceptions.RequestException。


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

AI辅助设计:Z-Image-Turbo+云端环境的创意工作流优化

AI辅助设计&#xff1a;Z-Image-Turbo云端环境的创意工作流优化 作为一名产品设计师&#xff0c;你是否经常遇到创意枯竭的困境&#xff1f;或者花费大量时间在重复性的设计元素生成上&#xff1f;Z-Image-Turbo作为一款开源的AI图像生成模型&#xff0c;能够帮助你快速生成高质…

作者头像 李华
网站建设 2026/1/13 3:24:05

工业级IoT库房温湿度实时监测系统:从感知到管控的全链路方案

一、项目背景 在食品、药品、电子元件、仓储物流、文物馆藏等众多领域&#xff0c;库房内的温湿度环境是影响物资存储质量的关键因素。传统库房温湿度管理多采用人工定时巡检、纸质记录的方式&#xff0c;存在效率低下、误差大、实时性差、漏检误报等问题。一旦温湿度超出安全阈…

作者头像 李华
网站建设 2026/1/12 15:21:47

从DALL·E到Z-Image-Turbo:低成本替代方案的快速迁移

从DALLE到Z-Image-Turbo&#xff1a;低成本替代方案的快速迁移 如果你正在使用商业AI绘画API&#xff08;如DALLE&#xff09;&#xff0c;但希望寻找一个开源替代方案来降低成本&#xff0c;Z-Image-Turbo可能是一个值得尝试的选择。本文将帮助你快速验证Z-Image-Turbo是否能满…

作者头像 李华
网站建设 2026/1/11 22:49:00

10分钟搭建阿里通义Z-Image-Turbo WebUI:科哥二次开发镜像一键部署指南

10分钟搭建阿里通义Z-Image-Turbo WebUI&#xff1a;科哥二次开发镜像一键部署指南 作为一名电商创业者&#xff0c;你是否经常为产品宣传图的质量和效率发愁&#xff1f;本地电脑性能不足&#xff0c;又不懂复杂的AI模型部署流程&#xff1f;今天我要分享的阿里通义Z-Image-Tu…

作者头像 李华
网站建设 2026/1/12 7:29:06

Z-Image-Turbo性能大比拼:不同云平台部署方案全解析

Z-Image-Turbo性能大比拼&#xff1a;不同云平台部署方案全解析 如果你正在寻找一款能够快速生成高质量图像的AI模型&#xff0c;Z-Image-Turbo绝对值得关注。这款由阿里开源的6B参数模型&#xff0c;通过创新的8步蒸馏技术&#xff0c;能在保持照片级质量的同时&#xff0c;将…

作者头像 李华
网站建设 2026/1/11 22:18:14

假期休闲不重样,靠谱短剧天天有新剧

看短剧是真香&#xff1a;解锁高效休闲新方式在快节奏的现代生活中&#xff0c;寻找一种高效、便捷的休闲放松方式&#xff0c;成为许多人的共同需求。而刷短剧&#xff0c;正以其“短平快”的叙事节奏和强情节的吸引力&#xff0c;迅速俘获了广大用户的心&#xff0c;成为填充…

作者头像 李华