yarl,一个超强的 Python 库

你好,我是坚持分享干货的 EarlGrey,翻译出版过《Python编程无师自通》、《Python并行计算手册》等技术书籍。

如果我的分享对你有帮助,请关注我,一起向上进击。

在 Python 中,我们经常需要处理 URL,例如解析 URL 的各个部分,修改 URL 的参数,构建 URL 的字符串,操作 URL 的对象等。

但是,Python 自带的 URL 库,例如 urllib, urlparse, urljoin 等,虽然功能强大,但是使用起来并不方便,有时候还会出现一些问题,例如 URL 的编码和解码,URL 的拼接和更新,URL 的兼容性和可读性等。😥

幸运的是,有一个第三方库可以帮助我们解决这个问题,那就是 yarl。👏

yarl 是什么?

yarl 是一个用于处理 URL 的 Python 库,它可以让你方便地解析,修改,构建,和操作 URL。它有以下的特点和优势:

  • 它可以自动对 URL 进行编码和解码,保证 URL 的规范和可读性。

  • 它可以访问和修改 URL 的各个部分,例如 scheme, host, path, query, fragment 等,提供了丰富的属性和方法。

  • 它可以使用简洁的运算符来拼接和更新 URL,例如 /, %, +, - 等,提供了灵活的语法。

目前,yarl 在 Github 的星标数超过 1000,每天在 PyPI 上的下载次数为 2-3 百万之间,最近 30 天的下载量接近 1 亿次。

6b9f64ca2bcb6dabcd0106bcd5dc050c.png

如何安装 yarl?

安装 yarl 非常简单,只需要使用 pip 命令即可:

pip install yarl

yarl 只支持 Python 3,不支持 Python 2。如果你想要在 Python 2 中使用类似的功能,你可以尝试使用 furl 这个库,但是它的性能和兼容性可能不如 yarl。

如何使用 yarl?

使用 yarl 也非常简单,只需要导入 yarl 库中的 URL 类,然后使用它的构造函数,属性,方法,和运算符即可。下面我们来看一些具体的例子:

解析 URL

我们可以使用 URL 类的构造函数来创建一个 URL 对象,然后使用它的属性来访问和修改 URL 的各个部分,例如 scheme, host, path, query, fragment 等。例如:

from yarl import URL

url = URL("https://www.python.org/~guido?arg=1#frag")
print(url) 
# https://www.python.org/~guido?arg=1#frag
print(url.scheme) 
# https
print(url.host) 
# www.python.org
print(url.path) 
# /~guido
print(url.query_string) 
# arg=1
print(url.query) 
# <MultiDictProxy ('arg': '1')>
print(url.fragment) 
# frag
print(url.parts) 
# ('/', '~guido')

我们可以看到,URL 对象会自动对 URL 进行规范化,保证 URL 的正确性和一致性。如果我们传入一个不合法的 URL,例如缺少 scheme 或 host,或者包含非法的字符,URL 对象会抛出一个 ValueError 异常。例如:

from yarl import URL

url = URL("www.python.org") 
# ValueError: No schema suffix '://' found in 'www.python.org'
url = URL("https://www.python.org/你好") 
# URL ('https://www.python.org/%E4%BD%A0%E5%A5%BD')

我们可以看到,URL 对象会自动对 URL 中的中文进行编码,使用百分号编码(percent-encoding)的方式,将中文转换为 ASCII 字符。

构建 URL

我们可以使用 URL 类的构造函数来创建一个空的 URL 对象,然后使用它的方法和运算符来构建 URL 的各个部分,例如 with_scheme, with_host, with_path, with_query, with_fragment 等。例如:

from yarl import URL

url = URL('http://example.com')
print(url) # http://example.com
url = url.with_scheme("https")
print(url) # https://example.com
url = url.with_host("www.python.org")
print(url) # URL ('https://www.python.org')
url = url / "foo" / "bar"
print(url) # URL ('https://www.python.org/foo/bar')
url = url % {"arg": "1"}
print(url) # URL ('https://www.python.org/foo/bar?arg=1')
url = url.with_fragment("frag")
print(url) # URL ('https://www.python.org/foo/bar?arg=1#frag')

总结

本文介绍了 yarl 这个用于处理 URL 的 Python 库,它可以让你方便地解析,修改,构建,和操作 URL。你可以自动对 URL 进行编码和解码,访问和修改 URL 的各个部分,使用简洁的运算符来拼接和更新 URL,支持不同的 URL 类型,与其他的 Python 库和框架兼容。

感谢你阅读我的文章,如果你喜欢我的文章,请关注我的账号,并积极评论,将文章分享给朋友。😊

- EOF -

文章已经看到这了,别忘了在右下角点个“赞”和“在看”鼓励哦~

推荐阅读  点击标题可跳转

1、Python 项目工程化最佳实践

2、Python 可以比 C 还要快!

3、streamlit,一个超强的 Python 库

4、豆瓣8.9分的C++经典之作,免费送!

5、Python 3.12 版本有什么变化?

回复下方「关键词」,获取优质资源

回复关键词「 pybook03」,领取进击的Grey与小伙伴一起翻译的《Think Python 2e》电子版

回复关键词「书单02」,领取进击的Grey整理的 10 本 Python 入门书的电子版

👇关注我的公众号👇

告诉你更多细节干货

e27010cddac60033d3d2b47d5a8a9f78.jpeg

欢迎围观我的朋友圈

👆每天更新所想所悟

  • 28
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值