提升Python网络编程效率:深入学习furl库

news2024/11/28 20:32:52

🍀 前言

博客地址:

  • CSDN:https://blog.csdn.net/powerbiubiu

👋 简介

furl 是一个 Python 库,用于处理 URL。它提供了一个简洁而强大的接口,用于构建、解析和操作 URL。本文章介绍下 furl 库的使用。

📖 正文

1 furl的特点

  • 链式调用:furl允许使用链式调用来便捷地构建和修改URL,使得代码更加清晰和易读;
  • 友好的API:furl提供了简洁而强大的API,使得对URL的操作变得非常直观和方便;
  • URL解析:furl能够自动解析URL中的各个部分(比如scheme、host、path、query参数等),并且提供了简单的属性和方法来访问和修改这些部分;
  • 参数操作:furl提供了便捷的方法来添加、修改和删除URL中的查询参数,使得对URL参数的操作变得非常容易;
  • URL编码:furl可以自动对URL进行编码,确保生成的URL是符合规范的;
  • 兼容性:furl对Python 2和Python 3都有良好的兼容性,因此可以在不同版本的Python中使用。

安装:pip install furl -i https://pypi.tuna.tsinghua.edu.cn/simple

2 furl的基本使用

2.1 创建furl对象
from furl import furl

# 路径
base_url = 'https://blog.csdn.net/powerbiubiu/article/details/135757392?spm=1001.2014.3001.5502'
# 创建furl对象
url = furl(base_url)
2.2 获取furl属性
# 获取rul
print(f"url:{url.url}")
# 获取协议
print(f"协议:{url.scheme}")
# 获取主机地址
print(f"主机地址:{url.host}")
# 获取端口
print(f"端口:{url.port}")
# 获取url路径
print(f"路径:{url.path}")
# 获取url参数
print(f"参数:{url.query}")


# url:https://blog.csdn.net/powerbiubiu/article/details/135757392?spm=1001.2014.3001.5502
# 协议:https
# 主机地址:blog.csdn.net
# 端口:443
# 路径:/powerbiubiu/article/details/135757392
# 参数:spm=1001.2014.3001.5502

3 furl路径操作

3.1 添加路径

在url中添加一段路径add_path

from furl import furl

base_url = 'http://www.example.com/index.html?name=zhangsan&age=20'
url = furl(base_url)
url.path.add("add_path")
print(url)

# http://www.example.com/index.html/add_path?name=zhangsan&age=20
3.2 删除路径

将url中路径的age删除

from furl import furl

base_url = 'http://www.example.com/index.html?name=zhangsan&age=20'
url = furl(base_url)
url.path.remove('age')
print(url)

# http://www.example.com/index.html?name=zhangsan&age=20
3.3 设置路径

url.path.load():将传入的路径字符串或列表解析为URL的路径部分,并将其存储在url.path属性中。

from furl import furl

base_url = 'http://www.example.com/index.html?name=zhangsan&age=20'
url = furl(base_url)
url.path.load('load')
print(url)

# http://www.example.com/load?name=zhangsan&age=20

url.path.set():用于设置URL的路径部分。它接受一个字符串或列表作为参数,并将其设置为URL的路径。
**注意:**set()方法会完全替换现有的路径部分,并用新的路径取代。

from furl import furl

base_url = 'http://www.example.com/index.html?name=zhangsan&age=20'
url = furl(base_url)
url.path.set('set')
print(url)

# http://www.example.com/set?name=zhangsan&age=20

Tips:
url.path.load()方法用于加载URL的路径部分,而url.path.set()方法用于设置URL的路径部分。load()方法会解析传入的字符串或列表,并替换现有的路径,而set()方法则完全替换现有的路径为新的路径。

3.4 获取路径列表
from furl import furl

base_url = 'http://www.example.com/index.html?name=zhangsan&age=20'
url = furl(base_url)
print(url.path.segments)

# ['index.html']
3.5 添加锚点

TIps:
锚点:片段是 URL 中的 # 后面的部分,通常用于标识文档中的某个特定位置。

from furl import furl

base_url = 'http://www.example.com/index.html'
url = furl(base_url)
url.fragment.add('test')
print(url)

# http://www.example.com/index.html#test
3.6 删除锚点
from furl import furl

base_url = 'http://www.example.com/index.html#test'
url = furl(base_url)
url.fragment.remove(True)
print(url)

# http://www.example.com/index.html

4 furl参数操作

4.1 获取参数

通过.args获取参数,返回一个字典。

from furl import furl

base_url = 'http://www.example.com/index.html?name=zhangsan&age=20'
url = furl(base_url)
print(url.args)

# {'name': 'zhangsan', 'age': '20'}
4.2 添加参数

url.args.add(key, value):添加查询参数。

from furl import furl

base_url = 'https://blog.csdn.net/powerbiubiu/article/details/135757392?spm=1001.2014.3001.5502'
url = furl(base_url)
url.args.add('phone', '13888888888')
print(url.args)
print(url)

# {'name': 'zhangsan', 'age': '20', 'phone': '13888888888'}
# http://www.example.com/index.html?name=zhangsan&age=20&phone=13888888888

Tips:
url.args.add()在添加相同key的参数时,仍然会进行添加,使得url路径中会存在相同键的情况,如果在确定路径中参数的时候,使用url.args.add()问题不大,如果在不清楚url路径中的参数,避免添加相同的参是,可以使用url.args.set()方法。

url.add({'param1': 'value1', 'param2': 'value2'}):直接通过url添加参数,支持同时添加多个。

from furl import furl

base_url = 'https://www.example.com/index.html?name=zhangsan&age=20'
url = furl(base_url)
url.add({'phone': '13888888888', 'addr': 'china'})
print(url.args)
print(url)

# {'name': 'zhangsan', 'age': '20', 'phone': '13888888888', 'addr': 'china'}
# http://www.example.com/index.html?name=zhangsan&age=20&phone=13888888888&addr=china
4.3 更新参数

url.args.set(key, value):设置参数。

from furl import furl

base_url = 'https://www.example.com/index.html?name=zhangsan&age=20'
url = furl(base_url)
url.args.set('phone', '13888888888')
print(url.args)
print(url)

# {'name': 'zhangsan', 'age': '20', 'phone': '13888888888'}
# http://www.example.com/index.html?name=zhangsan&age=20&phone=13888888888

url.args[key] =value:更新参数。

from furl import furl

base_url = 'https://www.example.com/index.html?name=zhangsan&age=20'
url = furl(base_url)
url.args['phone'] = '13888888888'
print(url.args)
print(url)

# {'name': 'zhangsan', 'age': '20', 'phone': '13888888888'}
# https://www.example.com/index.html?name=zhangsan&age=20&phone=13888888888

Tips:
如果在更新参数的时候,更新的键不存在,则进行添加操作,如果存在,执行更新操作。

4.4 删除参数

url.args.removevalues(key, value):删除指定的查询参数。

from furl import furl

base_url = 'https://www.example.com/index.html?name=zhangsan&age=20'
url = furl(base_url)
url.args.removevalues('age', '20')
print(url.args)
print(url)

# {'name': 'zhangsan'}
# http://www.example.com/index.html?name=zhangsan

del url.args[key]:通过参数的键来删除元素。

from furl import furl

base_url = 'https://www.example.com/index.html?name=zhangsan&age=20'
url = furl(base_url)
del url.args['age']
print(url.args)
print(url)

# {'name': 'zhangsan'}
# http://www.example.com/index.html?name=zhangsan

url.remove(args=[key1,key2]):通过键删除参数,支持同时删除多个参数。

from furl import furl

base_url = 'https://www.example.com/index.html?name=zhangsan&age=20'
url = furl(base_url)
url.remove(args=['name'])
print(url.args)
print(url)

# {'age': '20'}
# http://www.example.com/index.html?age=20

Tips:
使用url.args.removevalues()方法和url.remove()删除的时候,如果参数错误,不会报错,而del 的方式删除,如果键写错的情况下,代码会抛异常。

4.5 清空参数

url.args.clear():清空url中的参数。

from furl import furl

base_url = 'https://www.example.com/index.html?name=zhangsan&age=20'
url = furl(base_url)
del url.args['age']
print(url)

# http://www.example.com/index.html

✏ 总结

furl 提供了方便的 API 来构建、解析和操作 URL。
url.path 用于处理路径部分,url.args 用于处理查询参数部分,url.fragment 用于处理片段部分。

💖 欢迎关注我的公众号

在这里插入图片描述

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

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

相关文章

01 _ 分布式缘何而起:从单兵,到游击队,到集团军

这里先来聊聊什么是分布式。 与其直接用些抽象、晦涩的技术名词去给分布式下一个定义,还不如从理解分布式的发展驱动因素开始,我们一起去探寻它的本质,自然而然地也就清楚它的定义了。 这里将介绍分布式的起源,是如何从单台计算…

申请专利有用吗 好处

申请专利:一项值得考虑的策略 随着科技的快速发展和市场竞争的日益激烈,创新成为了企业或个人取得竞争优势的关键。在这样的背景下,申请专利成为了许多创新者保护自己创意和技术的重要手段。 申请专利真的有用吗? 申请专利可以…

Golang学习笔记

Golang学习笔记 安装Golang 来源:linux 安装 golang - 知乎 (zhihu.com) 由于我用的是linux系统,所以本文采用linux的安装方式介绍,如果你使用的是Windows/Mac 也可以看下该文章,或者自己去下列地址进行操作。 Download and in…

python--面向对象的三大特征---封装、继承、多态

1.封装: 1,在面向对象中,封装指的是一种安全机制,不让外界修改或者直接操作,将属性私有化; 如果要访问属性,提供公开的方法(getter,setter) 2. python的类如…

【Mybatis】Mybatis 二级缓存全详解教程

【Mybatis-Plus】Mybatis-Plus 二级缓存全详解 一,Mybatis-Plus介绍 MyBatis-Plus(简称MP)是一个基于 MyBatis 的增强工具,它简化了 MyBatis 的开发,并且提供了许多便利的功能,帮助开发者更高效地进行持久…

基于java+springboot+vue实现的健身房管理系统(文末源码+Lw)23-223

摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装健身房管理系统软件来发挥其高效地信息处理的作用&#xf…

如何实现无感刷新(附前后端实现)?

无感刷新的核心思路: 无感刷新机制的目的是在用户不知情的情况下,自动更新其认证令牌(通常是Access Token),以保证用户的会话不会中断。这通常涉及到两种类型的令牌: Access Token:它是用户进行…

C++:if语句(20)

介绍 c最基本的三种程序运行模式为:顺序执行,判断执行,循环执行 顺序执行:前面我们的代码都是从上往下,依次执行的,这就是按顺序依次执行 判断执行:通过我们写的判断条件,去判断要不…

算法:完全背包问题dp

文章目录 一、完全背包问题的特征二、定义状态三、状态转移四、降维优化五、参考例题5.1、Acwing:3.完全背包问题5.2、Acwing:900. 整数划分 一、完全背包问题的特征 完全背包问题是动态规划中的一种经典问题,它的主要特征可以总结如下&…

重学SpringBoot3-事件与监听器

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-事件与监听器 事件和监听器的基本概念Spring Boot中的事件类型1. ApplicationStartingEvent2. ApplicationEnvironmentPreparedEvent3. ApplicationCont…

【InternLM 实战营第二期笔记】使用茴香豆搭建你的RAG智能助理

RAG RAG是什么 RAG(Retrieval Augmented Generation)技术,通过检索与用户输入相关的信息片段,并结合外部知识库来生成更准确、更丰富的回答。解决 LLMs 在处理知识密集型任务时可能遇到的挑战, 如幻觉、知识过时和缺乏透明、可追…

2024年阿里云优惠券(代金券)在哪里领取?

阿里云作为国内领先的云计算服务提供商,不仅提供了稳定、高效的云服务,还时常推出各种优惠活动,以此来吸引用户上云。其中,阿里云优惠券就是一种常见的优惠方式。那么,在2024年,我们该如何领取阿里云优惠券…

在自定义数据集上微调 YOLOv9 模型

在自定义数据集上微调 YOLOv9模型可以显着提高目标检测性能,但这种改进有多显着呢?在这次全面的探索中,YOLOv9在SkyFusion数据集上进行了微调,分为三个不同的类别:飞机、船舶和车辆。通过一系列广泛的实验,包括修改学习率、图像大小和战略性冻结主干网,已经实现了令人印…

5. python练习题5-存款、收益率计算

5. python练习题5-存款、收益率计算 【目录】 文章目录 5. python练习题5-存款、收益率计算1. 目标任务2. 解题思路3. 知识回顾3.1 Python赋值运算符3.2 列表的append函数3.3 round()函数—保留小数点位数3.4 f格式化字符串3.5 列表求和方法 4. 程序代码4.1 使用循环结构实现4…

【强化学习的数学原理-赵世钰】课程笔记(二)贝尔曼公式

【强化学习的数学原理-赵世钰】课程笔记(二)贝尔曼公式 一. 内容概述 1. 第二章主要有两个内容 (1)一个核心概念:状态值(state value):从一个状态出发,沿着一个策略我…

linux安装dubboAdmin

1.环境准备: jdk-8u391-linux-x64apache-maven-3.9.6apache-tomcat-8.5.100 2.安装注册中心zookeeper zookeeper的安装看我的另一篇文章,安装完成后保持启动状态 linux安装Zookeeper的详细步骤-CSDN博客 3.安装dubboadmin 源码下载地址:R…

隔离放大器 分类 及说明

无源传感器隔离配电及信号采集传输 ●前置放大、电桥等电路配置电源方便采集信号 ●PLC、DCS现场模拟信号隔离、采集 ●直流电流/电压信号的隔离、转换及放大 ●模拟信号地线干扰抑制及数据隔离、采集 ●工业现场信号隔离及长线传输 ●仪器仪表与传感器信号收发 ●电力监控、医…

【Django开发】0到1美多商城项目md教程第6篇:账号登录,1. 用户名登录逻辑分析【附代码文档】

美多商城完整教程(附代码资料)主要内容讲述:欢迎来到美多商城!,项目准备。展示用户注册页面,创建用户模块子应用。用户注册业务实现,用户注册前端逻辑。图形验证码,图形验证码接口设…

Windows:IntelliJ IDEA Ultimate 安装 PHP 插件

在 IntelliJ IDEA Ultimate 中安装 PHP 插件,支持PHP开发调试 首先,进入File > Setting: 再次选择Plugins,然后选择上面的 Marketplace。 在搜索栏中输入 PHP,然后单击左侧的 Install 进行安装就可以了。 安装成功…

SD-WAN组成及关键技术解析

云桥通SD-WAN作为下一代网络连接技术,由控制平面、数据平面和管理平面三部分组成,共同构建了灵活、可管理和高效的网络架构。 1、控制平面: 控制平面负责决策制定和流量管理,在云桥通SD-WAN网络中扮演关键角色。基于软件定义网络…