【摸鱼笔记】yarl,一键处理url

背景

在日常的 Python 开发工作中,处理 URL 是常见的任务。

比如拼接生成 URL,判断 URL 用的协议,提取 URL 中的路径、参数等,如果只使用日常中处理文本的方式处理会非常麻烦;

许多 HTTP 库虽然提供处理 URL 的功能 但只是将处理 URL 作为辅助功能,且只识别固定的部分协议。此时需要一个主要面向 URL 开发的工具;

Python 提供了 yarl 作为处理 URL 的方案,单独处理 URL,不包含请求,支持识别大部分 URL 协议。

简介

yarl 库提供了许多专门处理 URL 的功能,如解析、构建、修改和编码 URL。

安装

pip install yarl

解析

使用 yarl 解析 URLs 非常简单。你可以使用 yarl.URL () 构造函数来创建一个 URL 对象,然后通过属性访问来提取 URL 的各个部分。

import yarl

# 创建一个URL对象
url = yarl.URL('https://example.com/path/to/resource?query=value#fragment')

# 提取URL的各个部分
print("scheme: ", url.scheme)
print("host: ", url.host)
print("path: ", url.path)

for k in url.query.keys():
    print("query: ", k, url.query.get(k))

print("fragment: ", url.fragment)

构建

yarl 也提供了构建 URLs 的便捷方式。你可以使用 yarl.URL () 构造函数并提供关键字参数来创建 URL。

import yarl

# 使用关键字参数构建URL

url = yarl.URL.build(scheme='https',
                     host='example.com',
                     path='/path/to/resource',
                     query={'query': 'value'},
                     fragment='fragment')

# 转换为字符串形式
url_str = url.__str__()

print(url_str)

修改

yarl 允许你轻松地修改 URL 的各个部分。你可以直接赋值给属性来更新 URL。

import yarl

# 创建一个URL对象
url = yarl.URL('https://example.com/old/path')
# 修改路径
url = url.with_path('/new/path')
# 添加查询参数
url = url.with_query(param="value")
# 删除查询参数
url = url.with_query("")
# 更新片段标识符
url = url.with_fragment('new-fragment')

# 转换为字符串形式查看修改后的URL
modified_url = url.__str__()
print(modified_url)

编码和解码

在处理 URLs 时,经常需要进行 URL 编码和解码。yarl 提供了 yarl.quote () 和 yarl.unquote () 函数来完成这些任务。

import yarl

# URL编码
encoded = yarl.URL('path with spaces')
print(encoded.__str__())
# URL解码
decoded = yarl.URL('path%20with%20spaces').human_repr()
print(decoded)

应用场景

  • HTTP 客户端开发:在与 requests 等库一起使用时,yarl 常被用来构建请求和解析 URL;
  • 数据抓取:编写网络爬虫时,用 yarl 对目标 URL 进行转换和规范化构建、验证,保证请求解析过程的正确;
  • API 服务端开发:对于 restful API 设计,可以利用 yarl 构建 URL,根据用户输入生成规范易懂的 URL;
  • 数据预处理:在大数据处理场景下,当需要对含有 URL 字段的数据集进行解析清洗时,yarl 能保证效率和正确性;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

The_Singing_Towers

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值