【Python】一文教你如何使用 Requests 库

news2024/11/25 5:01:43

 

作者主页:爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?type=blog个人简介:打工人。

持续分享:机器学习、深度学习、python相关内容、日常BUG解决方法及Windows&Linux实践小技巧。

如发现文章有误,麻烦请指出,我会及时去纠正。有其他需要可以私信我或者发我邮箱:zhilong666@foxmail.com 

 

目录

简介

发展史

Requests 库的主要功能包括:

        1. 发送 HTTP 请求

        2. 处理响应结果

        3. Session 管理

        4. 文件上传和下载

        5. 其他特性

使用步骤

        1. 安装 Requests 库

        2. 发送 HTTP 请求

        3. 处理响应结果

        4. Session 管理

        5. 文件上传和下载

以下是更多使用 Requests 库的示例代码:

        1. 使用 POST 方法发送 HTTP 请求,并传递 URL 参数和请求头:

        2. 自动处理 JSON 格式的响应结果:

        3. 使用代理服务器:

        4. 超时设置:

 总结


简介

        Requests 库是一个简洁易用的 Python HTTP 库,它基于 urllib3 库,可以用来发送 HTTP 请求,并处理响应结果。Requests 库提供了一种更人性化的接口,让用户更容易地编写 HTTP 请求代码。相比于 Python 自带的 urllib/urllib2 库,Requests 功能更加完整且易用,而且支持多种协议和认证方式,具有更好的扩展性和可读性。

发展史

        Requests 库是由 Kenneth Reitz 开发的。Kenneth 是一个 Python 社区的活跃成员,2011 年他发表了一篇名为 “Python HTTP: When in doubt, or when not in doubt, use Requests” 的博客,这篇文章介绍了他开发的 Requests 库,并强调了 Requests 库的易用性、友好性、可扩展性等优点。自此,Requests 库开始成为 Python 社区中最流行的 HTTP 库之一。Requests 库的当前版本是 2.26.0,是一个稳定、功能完善的 HTTP 库。

Requests 库的主要功能包括:

        1. 发送 HTTP 请求

        Requests 库可以发送 HTTP 请求,其中包括 GET、POST、PUT、PATCH、DELETE 等常见的 HTTP 请求方法,还支持定制请求头、请求参数、请求体、Cookie 等信息。同时,Requests 库还支持 HTTPS 和代理服务器等特性。

        2. 处理响应结果

        Requests 库可以处理 HTTP 响应结果,包括获取响应头、状态码、响应体、Cookies 等信息。同时,Requests 库还支持编码、解码响应结果、自动解析 JSON 和 XML 格式的响应结果。

        3. Session 管理

        Requests 库支持 Session 管理,可以让用户在多个请求之间共享 Cookie、用户认证等信息。同时,Session 还支持本地存储、代理和 SSL 验证等特性。

        4. 文件上传和下载

        Requests 库还支持上传和下载文件,可以处理文件的二进制流和文本流,同时还支持断点续传等特性。

        5. 其他特性

        Requests 库还支持重定向处理、认证、代理、超时控制、SSL 验证等特性,使得用户可以更好地控制 HTTP 请求的行为。

使用步骤

        1. 安装 Requests 库

        使用 pip 工具可以很方便地安装 Requests 库。

pip install requests

        如果是Linux,没有安装 pip 工具,请先使用以下命令安装: 

sudo apt-get install python-pip

        2. 发送 HTTP 请求

         使用 Requests 库可以很容易地发送 HTTP 请求。以下是一个简单的代码:

import requests

response = requests.get('https://www.baidu.com')
print(response.text)

        在上面的代码中,我们使用 requests 库发送了一个 HTTP GET 请求,获取了百度首页的 HTML 内容,并打印输出了响应结果的文本内容。当然,除了 GET 请求之外,还可以发送 POST、PUT、PATCH、DELETE 等请求方法,以及定制请求头、请求参数、请求体等信息。

        3. 处理响应结果

        处理 HTTP 响应结果也非常简单。以下是一个简单的代码:

import requests

response = requests.get('https://www.baidu.com')
print(response.status_code)
print(response.headers)
print(response.cookies)
print(response.text)

        在上面的代码中,我们使用 requests 库发送了一个 HTTP GET 请求,并获取了响应结果的状态码、响应头、Cookies 和文本内容。Requests 库还支持获取响应结果的二进制内容、JSON 和 XML 格式的结果等。同时,还支持自定义解析器,以便处理非标准的响应格式。 

        4. Session 管理

        使用 Requests 库的 Session 管理,可以在多个请求之间共享 Cookie、用户认证等信息。以下是一个 Session 简单的管理代码:

import requests

s = requests.Session()

s.get('http://httpbin.org/cookies/set/sessioncookie/123456789')
r = s.get('http://httpbin.org/cookies')
print(r.text)

        在上面代码中,我们创建了一个 Session 对象 s,自动处理 Cookie,并发送了两个 GET 请求。第一个请求设置了 Cookie 的值,第二个请求获取了当前的 Cookie 值。在第二个请求中,使用了 Session 对象 s,它自动携带了第一个请求中设置的 Cookie 值。 

        5. 文件上传和下载

        使用 Requests 库可以方便地上传和下载文件。以下是一个简单的文件上传代码:

import requests

url = 'http://httpbin.org/post'
files = {'file': open('report.xls', 'rb')}
r = requests.post(url, files=files)
print(r.text)

        在上面代码中,我们使用 Requests 库发送了一个 HTTP POST 请求,上传了一个名为 report.xls 的文件,并打印输出了响应结果的文本内容。

以下是更多使用 Requests 库的示例代码:

        1. 使用 POST 方法发送 HTTP 请求,并传递 URL 参数和请求头:

import requests

url = 'http://httpbin.org/post'
payload = {'key1': 'value1', 'key2': 'value2'}
headers = {'User-Agent': 'Mozilla/5.0'}
response = requests.post(url, data=payload, headers=headers)
print(response.text)

        2. 自动处理 JSON 格式的响应结果:

import requests

url = 'https://jsonplaceholder.typicode.com/todos/1'
response = requests.get(url)
data = response.json()
print(data)

        3. 使用代理服务器:

import requests

proxies = {
  'http': 'http://localhost:8080',
  'https': 'https://localhost:8080',
}
response = requests.get('http://httpbin.org/ip', proxies=proxies)
print(response.text)

        4. 超时设置:

import requests

response = requests.get('http://github.com', timeout=1)
print(response.text)

 总结

        Requests 库是一个功能强大、易用并受到广泛支持的 Python HTTP 库,它以其易用性、友好性、可扩展性等特点成为 Python 社区中最流行的 HTTP 库之一。Requests 提供了丰富的功能,包括发送 HTTP 请求、处理响应结果、Session 管理、文件上传和下载、代理服务器、重定向处理、认证、超时控制、SSL 验证等,同时提供了清晰、简单的 API,让用户更容易理解和使用。在开发 Python 网络应用程序时,Requests 库是不可或缺的一部分,可以使代码更加清晰、简洁和易于维护。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/624189.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

审视自己再出发,在职读研从人民大学与加拿大女王大学金融硕士项目起航

有人说,人生并非一帆风顺。是的,在人生的道路上,总会出现各种各样的麻烦。或者认真学习不见成效,或是努力工作得不到赏识。人生中最困难的事情就是审视自己,当我们意识到自己需要提升时,往往是拥有强大能量…

【Linux】线程分离和线程互斥

终于到线程互斥了~ 文章目录 前言一、线程分离 如何理解线程库和线程ID二、线程互斥总结 前言 在上一篇文章中我们学习了线程控制,比如创建一个线程,取消一个线程以及等待线程,这篇文章我们讲两个非常重要的概念,一个是线…

CDH 之 hive 升级至 hive-3.1.3 完美踩坑过程

一、准备工作 1.1 前言 这是博主在升级过程中遇到的问题记录,大家不一定遇到过,如果不是 CDH 平台的话,单是 hive 服务升级应该是不会有这些问题的,且升级前博主也参考过几篇相关 CDH 升级 hive 服务的博文,前面的升级…

go语言操作以太坊智能合约

操作中要注意版本问题 geth版本、golang版本等 在remix环境中写好合约后,进行编译得到abi文件 简单举例 Hello.sol合约 // SPDX-License-Identifier: MIT pragma solidity ^0.8.0;contract Hello {string Msg;function setMsg(string memory _msg) public{Msg_msg…

SM2密码算法规范介绍

目录 1、SM2的密钥对 1.1、SM2公钥 1.2、SM2私钥 2、密钥数据格式 2.1、 GMT0009 2.2、 GMT0016 2.3、 GMT0018 3、加密数据格式 3.1、GMT0009 3.2、GMT0016 3.3、GMT0018 4、签名数据格式 4.1、GMT0009 4.2、GMT0016 4.3、GMT0018 1、SM2的密钥对 1.1、SM2公钥…

java版DVD影碟片出租赁系统C/S模式 java电影购票系统课程设计

系统采用c/s架构,当然,你可以服务端、客户端都在同一台电脑上运行; 也可以在同一局域网内服务端、客户端在其它不同电脑上运行; 如果你有云服务器,可将Service端代码部署至云服务器上,客户端在任何一台有…

不愧是阿里P8出手的并发编程笔记!颠覆了我以往“正确“的认知

对于一个Java程序员而言,能否熟练掌握并发编程是判断他优秀与否的重要标准之一。因为并发编程是Java语言中最为晦涩的知识点,它涉及操作系统、内存、CPU、编程语言等多方面的基础能力,更为考验一个程序员的内功。 那到底应该怎么学习并发编程…

浅析给水管网动态水力建模数据及其管理

摘要:给水管网在城市生产及生活中发挥着十分重要的作用,所以,保证其正常运行便显得尤为必要了。本文将基于给水管网动态水力建模数据及其管理展开相应的分析,以期促进城市给水管网运行质量的提高,为同行提供一些有益的…

HTML4

前序知识 认识两位先驱 计算机基础知识 计算机俗称电脑,是现代一种用于高速计算的电子计算机器,可以进行数值计算、逻辑计算,还具有存储记忆功能。计算机由 硬件 软件组成 C/S架构与B/S架构 上面提到的应用软件,又分为两大类…

软件测试之登录测试详解

一、功能测试--登录功能性测试用例包括:1.什么都不输入,点击提交按钮,看提示信息。(非空检查)2.输入已注册的用户名和正确的密码,验证是否登录成功;3.输入已注册的用户名和不正确的密码&#xf…

PerformanceRunner即将发布2023年新版本,具体功能有哪些?

PerformanceRunner(简称PR)是国内专业的支持http、https、websocket、tcp/ip、MQ等各种协议、10万海量并发、可靠的性能测试工具/压力测试工具,降低了应用系统运行风险。 PerformanceRunner即将发布2023年新版本,具体功能有哪些? 1.录制时单机…

【Python入门篇】——Python函数(函数介绍,函数的定义,函数的参数和函数的返回值)

作者简介: 辭七七,目前大一,正在学习C/C,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: Python入门,本专栏主要内容为Python的基础语法,Python中的选择循环语句…

都2023年了,网络安全还能入门吗?

前言 随着互联网的发展,网络安全逐渐成为重要领域之一。由于网络攻击已成为全球规模的问题,这使得网络安全专业成为各企业的重中之重。在这篇文章中,我们将从网络安全的发展趋势、就业前景和薪资水平方面入手,分析网络安全入门的…

【集群】部署LVS-DR群集

文章目录 一、LVS-DR工作原理1. 数据包流向分析2. DR模式的特点3. ARP 解析问题3.1 问题1:ip地址冲突3.2 问题2:真实服务器的第二次ARP请求3.3 解决ARP的两个问题的设置方法 二、LVS-DR部署过程1. 配置环境2. 部署服务器2.1 环境配置2.2 LVS-DR调度器2.2…

【基础知识】一文看懂深度优先算法和广度优先算法

概览 先上个图 现在我们要访问图中的每个节点,即图的遍历。 图的遍历是指,从给定图中任意指定的顶点(称为初始点)出发,按照某种搜索方法沿着图的边访问图中的所有顶点,使每个顶点仅被访问一次&#xff…

三、django-vue-admin开源项目二次开发——后端快速实现curd及接口

上一章: 二、django-vue-admin开源项目二次开发——修改默认菜单_做测试的喵酱的博客-CSDN博客 下一章: 一、背景 我想实现接口自动化用例的管理功能。一共涉及到两张表,一张项目表,是所有的项目列表。 一张是case列表&#…

Postgresql关于JSON、JSONB的操作符、处理函数(持续更新)

一、postgresql实用函数 (只列举本次用到的函数,其他函数在文章后面有详解) 1.1、将jsonb格式的数组中的值展开/分解成单独的数据/对象? SELECT answer_id, jsonb_array_elements(option_ids)::INTEGER AS option_id FROM db_l…

Java HashMap初始化大小设置多少合适

修改公司老代码的时候,发现阿里编码规约插件提示HashMap初始化时尽量指定初始值大小,因为设置合理的初始值可以提升性能: HashMap继承自AbstractMap类,实现了Map、Cloneable、java.io.Serializable接口,是基于散列表实…

Prompt 工程指南(三)—— 高级技术篇之零样本和少样本提示

到目前为止,显而易见的是,改进提示有助于在不同任务上获得更好的结果。这就是提示工程背后的理念和目标。 虽然上篇教程介绍的基本示例已经很有趣,但在接下来的几篇教程中,我们将介绍更高级的 Prompt 提示工程技巧,使…

LabVIEW编程开发PCB测试仪

LabVIEW编程开发PCB测试仪 使用PXI和LabVIEW的PCB钉床测试仪 用于PCB(印刷电路板)的钉床测试仪,使用PXI和LabVIEW。一家电子制造公司需要测试仪来测试他们的PCB产品。钉床测试仪是一种具有连接到电路板上各个测试点的引脚的测试。电路板需要…