Python 网络请求:深入理解Requests库

目录

引言

一、Requests库简介

二、安装与基本使用

三、requests库的特性与优势

四、requests库在实际应用中的案例

1.get请求

2.post请求

3.超时重试

4.headers设置

5.session会话

6.携带cookie​​​​​​​

7.携带代理​​​​​​​

8.携带身份认证​​​​​​​

9.文件上传​​​​​​​

10.文件下载​​​​​​​

11.解决重定向​​​​​​​

12.证书验证​​​​​​​

总结


引言

在Python编程世界中,进行网络数据交互是一项至关重要的技能,而Requests库则是这一领域中最受开发者喜爱的工具之一。Requests库以其简洁易用、功能强大而著称,让HTTP客户端操作变得无比轻松,无论是获取网页内容、发送POST请求还是处理API响应,它都能提供强大的支持。本文将带领您深入了解Python Requests库,探讨其核心功能和应用场景。

一、Requests库简介

Requests库由Kenneth Reitz于2012年创建,旨在简化HTTP客户端的使用。它建立在urllib3之上,但提供了更加人性化的接口和丰富的功能特性。只需一行代码,就能发起HTTP GET、POST等各类请求,并能自动处理各种HTTP认证机制、重定向、cookies以及超时等问题。

二、安装与基本使用

在Python环境中,通过pip命令即可快速安装Requests库:

pip install requests

导入库后,发起一个HTTP GET请求只需要短短几行代码:

import requestsresponse = requests.get('https://www.example.com')
print(response.status_code)
print(response.text)

上述代码首先导入requests模块,然后使用get方法向指定URL发送GET请求,并将服务器返回的响应存储在response对象中。response对象包含了诸如状态码、响应体文本、headers等多种信息。

三、requests库的特性与优势

  1. 简洁易用:requests库的API设计非常简洁,易于上手。开发者只需关注业务逻辑,无需处理底层的HTTP细节。
  2. 功能强大:requests库支持多种HTTP方法、自动处理URL编码、会话、cookies等复杂操作,能够满足各种HTTP请求的需求。
  3. 高度可定制:requests库提供了丰富的参数和选项,允许开发者根据实际需求定制请求和响应的处理方式。
  4. 社区支持:requests库拥有庞大的用户群体和活跃的社区,遇到问题时可以轻松找到解决方案和支持。

四、requests库在实际应用中的案例

  1. 网页爬虫:使用requests库发送GET请求,抓取网页内容,并结合BeautifulSoup等库解析HTML,提取所需信息。
  2. API交互:与第三方API进行交互,发送POST、PUT等请求,获取或修改数据。
  3. 数据上报:将本地数据通过requests库发送到远程服务器进行存储或分析。

案例代码:

1.get请求

import requests
response = requests.get('https://www.example.com')
print(response.text)​​​​​​​print(response.status_code)  # 输出状态码  
print(response.headers)  # 输出响应头  
print(response.text)  # 输出响应内容(文本格式)  
print(response.json())  # 输出响应内容(JSON格式,如果响应内容是JSON的话)

2.post请求

import requestsimport jsondata = {'key': 'value'}json_data = json.dumps(data)response = requests.post('https://www.example.com', json=json_data)print(response.text)

3.超时重试

response = requests.get('https://api.example.com/data', timeout=5)try:response = requests.get('https://api.example.com/data', timeout=5)
except requests.exceptions.Timeout:print('Timeout! Let\'s try it again...')response = requests.get('https://api.example.com/data', timeout=5)

4.headers设置

import requestsheaders = {'User-Agent': 'Mozilla/5.0'}response = requests.get('https://www.example.com', headers=headers)print(response.text)

5.session会话​​​​​​​

import requestssession = requests.Session()# 第一个请求response1 = session.get('https://www.example.com/login')print(response1.text)# 第二个请求,会话保持response2 = session.get('https://www.example.com/dashboard')print(response2.text)

6.携带cookie​​​​​​​

import requestscookies = {'key': 'value'}response = requests.get('https://www.example.com', cookies=cookies)print(response.text)

7.携带代理​​​​​​​

import requestsproxies = {  'http': 'http://10.10.1.10:3128',   'https': 'http://10.10.1.10:1080'  }response = requests.get('https://www.example.com', proxies=proxies)print(response.text)

8.携带身份认证​​​​​​​

import requestsfrom requests.auth import HTTPBasicAuthresponse = requests.get('https://www.example.com', auth=HTTPBasicAuth('username', 'password'))
print(response.text)

9.文件上传​​​​​​​

import requestsfiles = {'file': open('example.txt', 'rb')}response = requests.post('https://www.example.com/upload', files=files)print(response.text)

10.文件下载​​​​​​​

import requestsurl = 'https://www.example.com/file.jpg'response = requests.get(url)with open('file.jpg', 'wb') as f:    f.write(response.content)

11.解决重定向​​​​​​​

import requestsresponse = requests.get('https://www.example.com', allow_redirects=False)if response.status_code == 302:    redirect_url = response.headers['Location']    print(f'Redirected to: {redirect_url}')

12.证书验证​​​​​​​

import requestsresponse = requests.get('https://www.example.com', verify=False)print(response.text)

总结

requests库作为Python中处理HTTP请求的神器,以其简洁易用、功能强大、高度可定制和社区支持等特性,在实际应用中发挥着重要作用。无论是网页爬虫、API交互还是数据上报等场景,requests库都能帮助开发者更加高效地处理HTTP请求,提升开发效率。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot学习笔记-S2

1. SpringBoot中的常见注解 RequestBody:使SpringMVC框架可自动读取请求体里面的JSON格式的数据,转换成map类型的集合对象RestController:开发RESTful API 时使用,等价于ResponseBody Controller。RestController和Controller的…

【简单讲解下WebSocket】

🌈个人主页:程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

卷积神经网络-池化层

卷积神经网络-池化层 池化层(Pooling Layer)是深度学习神经网络中的一个重要组成部分,通常用于减少特征图的空间尺寸,从而降低模型复杂度和计算量,同时还能增强模型的不变性和鲁棒性。 池化操作通常在卷积神经网络&am…

号卡极团分销管理系统 index.php SQL注入漏洞复现

0x01 产品简介 号卡极团分销管理系统,同步对接多平台,同步订单信息,支持敢探号一键上架,首页多套UI+商品下单页多套模板,订单查询支持实时物流信息、支持代理商自定义域名、泛域名绑定,内置敢探号、172平台、号氪云平台第三方接口以及号卡网同系统对接! 0x02 漏洞概述…

深入解析Hadoop生态核心组件:HDFS、MapReduce和YARN

这里写目录标题 01HDFS02Yarn03Hive04HBase1.特点2.存储 05Spark及Spark Streaming关于作者:推荐理由:作者直播推荐: 一篇讲明白 Hadoop 生态的三大部件 进入大数据阶段就意味着进入NoSQL阶段,更多的是面向…

如何用python绘制地图并计算地图上两点之间的距离【附源码】

一、这段代码用plotiy库绘制了可视化世界平面地图,计算了纽约和洛杉矶两个城市之间的距离,并将其打印输出。同时,在地图上显示了这两个城市的坐标点,具体代码如下: import plotly.graph_objects as go from geopy.distance import geodesic # 创建地图对象 fig = go.Fig…

Docker Desktop 不支持 host 网络模式

先把这个结论的放在前面,直接访问链接就能看到官方文档中已经明确说了不支持。 参考链接:docker desktop for windows 不支持 host 网络模式 以前对于 docker 的网络模式,一直只是了解,没有亲自尝试过。结果今天在尝试 docker 的 …

Android12 简单的共享内存驱动实现 参考Ashmem

Android12 共享内存驱动实现 SOC:RK3568 system:Android12 概述: 1. 概述 Ashmem(Anonymous Shared Memory,Android 匿名共享内存),它基于 mmap 系统调用,可以让不同进程将同一段…

Flutter Web 的未来,Wasm Native 即将到来

早在去年 Google I/O 发布 Flutter 3.10 的时候就提到过, Flutter Web 的未来会是 Wasm Native ,当时 Flutter 团队就表示,Flutter Web 的定位不是设计为通用 Web 的框架,类似的 Web 框架现在有很多,而 Flutter 的定位…

DIY蓝牙键盘(1) - 理解 键盘报文(免费)

DIY蓝牙键盘(1) - 理解键盘报文 1. 键盘报文体验 一个键盘对于用户的体验是,用户按按键A他能看到字母A会在主机上显示出来。那这是如何实现的? 其实很简单,只要键盘发送下面的两个报文给主机,字母A就能在主机上显示出来。 (1)…

如何打包一个手机软件

目录 前言: 准备工具: 创建项目: 打包程序: 前言: 我们平时手机上使用的程序,或者电脑上使用的程序都可以由Web程序打包而来的,而打包不是一个.html文件也不是一个.js文件而是一个大型的文…

Centos-Linux安装部署MySQL-8.0

linux搭建mysql 1.使用系统的root账户 2.切换到 /usr/local 目录下 3.下载mysql wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.31-linux-glibc2.12-x86_64.tar.xz也可以直接在官方下载最新版本 官方下载 选择linux 4.解压mysql tar xvJf mysql-8.0.21-l…

MySQL基础【语句执行顺序】

一个SQL语句它的执行顺序对于我们思考题意有着很重要的关系 题意就是:找出哪些只逛超市不买单的人(买单0元也算哦,可能是使用的是代金券吧) 看到此题关键找出两个数据 参观过的人 和 买单的人 他们的差就是白嫖的人(支…

Excel、PowerQuery 和 ChatGPT 终极手册(上)

原文:Ultimate ChatGPT Handbook for Enterprises 译者:飞龙 协议:CC BY-NC-SA 4.0 序言 在不断发展的数据管理和分析领域中,掌握 Excel 的查找功能不仅是一种技能,更是高效数据处理的基石。《使用 Power Query 和 Ch…

可变参数模板

可变参数模板的概念 可变参数模板是C11新增的最强大的特性之一,它对参数高度泛化,能够让我们创建可以接受可变参数的函数模板和类模板。 在C98/03中,类模板和函数模板中只能包含固定数量的模板参数,可变模板参数无疑是一个巨大的…

51单片机使用uart串口和助手简单调试

基础知识 参考 特殊功能寄存器PCON(控制波特率是否加倍SMOD)、TMOD(T0,T1计时器的功能方式)、TCON(T0,T1计时器的控制)、串口中断、SCON(串口数据控制寄存器) 关闭定时器1中断&…

leetcode 热题 100(部分)C/C++

leetcode 热题 100 双指针 盛最多水的容器 【mid】【双指针】 思路: 好久没写代码sb了,加上之前写的双指针并不多,以及有点思维定势了。我对双指针比较刻板的印象一直是两层for循环i,j,初始时i,j都位于左界附近&…

能源照明运作机制与智能调控技术实现途径

随着城市化进程的加速,智慧城市已成为现代城市发展的重要方向。能源照明作为城市基础设施的重要组成部分,其运作机制与智能调控技术的实现对于提高城市能源利用效率、促进可持续发展具有重要意义。 能源照明是一个涵盖广泛、错综复杂的领域,它…

7种链游媒体宣发工具助力游戏营销-华媒舍

一. 什么是链游媒体 链游媒体是指以区块链技术为基础,实现游戏与媒体资源之间的连接和交互的媒体形态。通过区块链技术,链游媒体能够确保游戏内容和媒体信息的透明性和不可篡改性,提供更加公正、透明的游戏环境。 二. 链游媒体宣发工具的重要…

速通数据结构与算法第四站 双链表

系列文章目录 速通数据结构与算法系列 1 速通数据结构与算法第一站 复杂度 http://t.csdnimg.cn/sxEGF 2 速通数据结构与算法第二站 顺序表 http://t.csdnimg.cn/WVyDb 3 速通数据结构与算法第三站 单链表 http://t.csdnimg.cn/cDpcC 感谢佬们…