你好,我是坚持分享干货的 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 亿次。
如何安装 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 -
文章已经看到这了,别忘了在右下角点个“赞”和“在看”鼓励哦~
告诉你更多细节干货
欢迎围观我的朋友圈
??每天更新所想所悟