Python网络请求库requests的10个基本用法

news2024/11/27 12:54:27

大家好!今天我们要聊聊Python中非常实用的一个库——requests。这个库让发送HTTP请求变得超级简单。无论你是想抓取网页数据还是测试API接口,requests都能派上大用场。下面我们就一起来看看如何使用requests完成一些常见的任务。

引言

随着互联网技术的发展,HTTP请求成为开发者们日常工作中不可或缺的一部分。Python语言以其简洁易用的特点,成为众多开发者首选的编程语言之一。而requests库作为Python中最受欢迎的HTTP客户端库之一,更是大大简化了发送HTTP请求的过程。本文将详细介绍如何利用requests库执行各种类型的HTTP请求,从基础的GET请求到复杂的认证、文件上传等高级功能。

发送GET请求

首先,你需要安装requests库。打开命令行工具,输入以下命令:

安装完成后,就可以开始使用了。最简单的GET请求如下:

这里的response.text会打印出响应的内容。如果你想获取特定信息,可以解析返回的数据。比如,如果返回的是JSON格式的数据,可以用response.json()方法将其转换为Python字典。

获取页面的二进制数据

有时候我们需要获取图片或文件等二进制数据,这时可以使用requests.get方法并指定stream=True来实现。

这段代码会将图片下载到当前目录下。

添加查询参数

很多时候,我们需要向URL添加查询参数。这可以通过传递一个字典给params参数来实现:

这里httpbin.org是一个测试HTTP请求的好地方。

发送POST请求

发送POST请求也很简单,只需要调用requests.post方法,并传入要发送的数据即可:

处理JSON数据

当服务器返回JSON格式的数据时,我们可以直接使用response.json()来解析它:

这段代码会打印出GitHub API返回的所有事件类型。

设置自定义Header

如果你需要设置HTTP头部信息,可以通过headers参数来实现:

设置User-Agent可以帮助我们模拟浏览器行为。

发送带认证信息的请求

有时我们需要访问需要认证的网站或API。requests库提供了多种认证方式,包括基本认证(Basic Auth)和OAuth等。下面我们来看一个基本认证的例子:

在这个例子中,我们使用了HTTPBasicAuth类来提供用户名和密码进行认证。

发送带有表单数据的请求

当我们需要提交表单数据时,可以使用requests.post方法,并通过data参数传递字典形式的数据:

这段代码会发送包含名字和邮箱的POST请求。

发送带有文件的请求

在上传文件时,可以使用requests.post方法,并通过files参数传递文件对象:

这段代码会上传名为example.txt的文件到服务器。

处理重定向和超时

在处理网络请求时,我们可能会遇到重定向和超时问题。requests库提供了相应的参数来处理这些问题。

处理重定向:

如果不需要自动重定向,可以设置allow_redirects=False

处理超时:

这段代码设置了请求的超时时间为5秒,如果超过这个时间没有响应,则会抛出Timeout异常。

实战案例:获取天气信息

假设我们需要获取某个城市的天气信息,可以使用OpenWeatherMap提供的API来实现。以下是具体的步骤:

1. 注册一个OpenWeatherMap账户并获取API密钥。2. 使用requests库发送GET请求获取天气数据。

下面是完整的代码示例:

在这段代码中,我们使用了requests.get方法发送GET请求,并通过response.json()方法解析返回的JSON数据。然后,我们提取了温度和天气描述信息并打印出来。

总结

本文介绍了如何使用requests库执行各种类型的HTTP请求,包括发送GET/POST请求、处理JSON数据、设置自定义Header、发送带认证信息的请求、上传文件、处理重定向和超时等问题。通过实战案例展示了如何利用requests获取天气信息,希望这些知识能够帮助你在实际开发过程中更加高效地处理HTTP请求。

好了,今天的分享就到这里了,我们下期见。

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

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

相关文章

空洞卷积:Atrous/Dilated convolution - 语义分割中多用到

没办法,我还是很多基础的、底层的模块不通透,读论文难免会受到阻碍,而且这现在科研任务很急了,必须要马上动手实验,全给我弄明白、特别是算法! 空洞卷积-可变形卷积-这一个个我都要。 空洞卷积据说在语义分…

推动AI技术研发与应用,景联文科技提供专业高效图像采集服务

景联文科技提供专业图像采集服务,涵盖多个领域的应用需求。 包含人体图像、人脸图像、手指指纹、手势识别、交通道路、车辆监控等图像数据集,计算机视觉图像数据集超400TB,支持免费试采试标。 高质量人像采集服务:支持不同光线条件…

Netty入门基础:Netty架构设计模型介绍(主从Reactor多线程模型,Futrue-Listener模型)

文章目录 🎵单Reactor单线程✏单Reactor多线程🛒主从Reactor多线程🎐Netty模型🚴‍♀️Future-listener模型 🎵单Reactor单线程 Reactor通过select监控客户端的事件,通过dispatch分发。 如果是建立连接事件…

Unity-RetargetPro3-动画插件试用

一个名气大于实战的插件 目录 初见这个插件, 打开文档看看 下载并打开Demo项目 直接看Editor代码吧 这个插件,可以放弃了 初见这个插件, 觉得,1.都已经是3.0版本,不错哦 看上去,2.目录也 不错,有分Core,plugin等 (应该感觉,怎么也是大公司的代码分拆出来吧,感…

计算机的错误计算(一百三十)

摘要 用手持式计算器计算 则输出为0 . 计算机的错误计算(四十)探讨了计算器的计算精度问题。为了回应一位计算器收藏家来信中的疑问,既(四十)后再续若干节,以便更为广泛地讨论计算器的上述问题。 例1. …

【思维导图】C语言—数据类型和变量

今天我们来回顾——C语言【数据类型和变量】 我们先梳理一下思路:首先学习数据的类型,然后学会用类型去创建变量,接着学习操作符进行变量之间的运算,最后学习 scanf 输入数据, printf 进行数据的打印。回顾的时候最好…

【K8S系列】Kubernetes Pod 状态详细介绍及异常状态解决方案

在 Kubernetes 中,Pod 是最小的可调度单元,负责运行一个或多个容器。Pod 的状态能够反映其生命周期中的不同阶段,帮助用户了解当前的运行状况。本文将详细介绍 Kubernetes Pod 的各种状态及其可能的异常状态解决方案。 一、Pod 状态概览 Po…

【Git】远程操作-标签管理-多人协作

远程操作 分布式版本控制系统 概念理解 Git就像正在看的一本书。每当看完一章,可以将其保存起来,如果后面想修改或者查看以前自己看到哪里,随时可以翻看。Git就是帮助记录这些修改的工具,主要负责记录每次改动,就类似…

git命令笔记(速查速查)

git命令功能总结 1.创建git的本地仓库2. 配置本地仓库(name和email地址)3. 工作区、版本库、暂存区、对象区3.1 add, commit3.2 打印提交日志3.2 修改文件 4.版本回退(git reset)5. 撤销修改(在push之前撤销)6.删除版本库中的文件…

Github + 自定义域名搭建个人静态站点

Github 自定义域名搭建个人静态站点 使用 Github 部署一个自己的免费站点给你的站点添加上自定义域名 本文基于腾讯云基于二级域名, 作用于 Github 实现自定义域名站点 使用 Github 部署一个自己的免费站点 首先你得有一个 Github 账号, 没有就去注册一个,网上有教程,本文跳…

字典学习算法

分为固定基字典和学习型字典 学习型字典 是指通过训练大量与目标数据相似的数据,学习其特征获得的字典。字典学习主要包括两个阶段,一个是字典构建阶段,一个是利用字典进行样本表示阶段。 首次提出:最优方向法(Method …

JSON 注入攻击 API

文章目录 JSON 注入攻击 API"注入所有东西"是"聪明的"发生了什么? 什么是 JSON 注入?为什么解析器是问题所在解析不一致 JSON 解析器互操作性中的安全问题处理重复密钥的方式不一致按键碰撞响应不一致JSON 序列化(反序列化)中的不一致 好的。JSON 解析器…

Vue--数据代理

Object.defineProperty const person {}; // 创建一个新对象 person.name‘xusx’ // 通过 defineProperty 使用数据描述符添加对象属性的示例 Object.defineProperty(person, “age”, { value: 37, // 默认值 writable: true, // 不可写 默认false enumerable: true, // 是…

【数据库系统概论】第3章 关系数据库标准语言SQL(一)数据定义(超详细)

教材: 数据库系统概论(第6版)王珊,杜小勇,陈红编著 目录 一、SQL概述 1.1 SQL 的产生与发展 1.2 SQL的特点 1.3 SQL的基本概念 二、数据定义 2.1 数据库的定义 2.2 数据表的定义 2.3 模式的定义 一、SQL概述 1974年IBM为关系DBMS设…

3.cpp基本数据类型

cpp基本数据类型 1.cpp基本数据类型 1.cpp基本数据类型 C基本数据类型和C语言的基本数据类型差不多 注意bool类型&#xff1a;存储真值 true 或假值 false&#xff0c;C语言编译器C99以上支持。 C语言的bool类型&#xff1a;要添加 #include <stdbool.h>头文件 #includ…

【C++ 同余 裴蜀定理 中位数贪心 并集查找】2607. 使子数组元素和相等|2071

本文涉及知识点 C贪心 数论&#xff1a;质数、最大公约数、菲蜀定理 C图论 LeetCode2607. 使子数组元素和相等 给你一个下标从 0 开始的整数数组 arr 和一个整数 k 。数组 arr 是一个循环数组。换句话说&#xff0c;数组中的最后一个元素的下一个元素是数组中的第一个元素&a…

windows系统中,在cmd窗口演练 Redis 基本操作命令

文章目录 一、Redis 介绍1.1 Redis 的应用场景1.2 Redis 的特点 二、Windows版Redis安装三、Redis Desktop Manager安装四、Redis 常用基本操作4.1 查看操作4.2 操作string类型的命令4.2.1 设置获取Key4.2.2 MSET&#xff08;Multi&#xff09;支持批量设置key、MGET支持批量获…

擎创科技声明

近日&#xff0c;我司陆续接到求职者反映&#xff0c;有自称是擎创科技招聘人员&#xff0c;冒用“上海擎创信息技术有限公司”名义&#xff0c;用“126.com”的邮箱向求职者发布招聘信息&#xff0c;要求用户下载注册APP&#xff0c;进行在线测评。 对此&#xff0c;我司郑重…

前端算法合集-2(含面试题-美团一面)

主要考察的就是数组扁平化,由浅入深吧 ①利用tostring()和split() let arr [1, 2, 3, [4, 5, 6], [7, 8, [9, 10, 11], 12], [13, 14, 15]] let newarrarr.toString().split(,) let numarrnewarr.map((item)>{itemNumber(item)return item }) console.log(numarr) ②利用…

【SpringCloud】Gateway微服务网关(gateway快速⼊⻔ 断⾔⼯⼚ 过滤器⼯⼚ 浏览器同源策略)

Gateway微服务网关 Gateway服务网关什么是Gateway网关&#xff1f;为什么需要网关&#xff1f; Gateway快速入门创建gateway服务&#xff0c;引入依赖编写配置文件yaml和路由规则重启测试 断言工厂过滤器工厂路由过滤器的种类请求头过滤器默认过滤器全局过滤器【可写自定义逻辑…