🍀 前言
博客地址:
- 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
用于处理片段部分。