跳转到主要内容

基于WHAT WG URL标准的URL解析器和操作器

项目描述

Python的urllib.parse模块既不遵循遗留的RFC 3978标准,也不遵循更新的WHATWG URL规范。它也相对较慢。

这是 ada_url,一个基于 Ada URL 解析器的快速、符合标准的 Python 库,用于处理 URL。

安装

PyPI 安装

pip install ada_url

使用示例

解析 URL

URL 类旨在匹配 WHATWG URL 规范 中描述的:

>>> from ada_url import URL
>>> urlobj = URL('https://example.org/path/../file.txt')
>>> urlobj.href
'https://example.org/path/file.txt'

parse_url 函数返回所有 URL 元素的字典

>>> from ada_url import parse_url
>>> parse_url('https://user:pass@example.org:80/api?q=1#2')
{
    'href': 'https://user:pass@example.org:80/api?q=1#2',
    'username': 'user',
    'password': 'pass',
    'protocol': 'https:',
    'port': '80',
    'hostname': 'example.org',
    'host': 'example.org:80',
    'pathname': '/api',
    'search': '?q=1',
    'hash': '#2',
    'origin': 'https://example.org:80',
    'host_type': <HostType.DEFAULT: 0>,
    'scheme_type': <SchemeType.HTTPS: 2>
}

修改 URL

使用 URL 类替换 URL 组件

>>> from ada_url import URL
>>> urlobj = URL('https://example.org/path/../file.txt')
>>> urlobj.host = 'example.com'
>>> urlobj.href
'https://example.com/file.txt'

使用 replace_url 函数替换 URL 组件

>>> from ada_url import replace_url
>>> replace_url('https://example.org/path/../file.txt', host='example.com')
'https://example.com/file.txt'

搜索参数

URLSearchParams 类旨在匹配 WHATWG URL 规范

>>> from ada_url import URLSearchParams
>>> obj = URLSearchParams('key1=value1&key2=value2')
>>> list(obj.items())
[('key1', 'value1'), ('key2', 'value2')]

parse_search_params 函数返回映射到值列表的搜索键的字典

>>> from ada_url import parse_search_params
>>> parse_search_params('key1=value1&key2=value2')
{'key1': ['value1'], 'key2': ['value2']}

国际化域名

idna 类可以编码和解码 IDN

>>> from ada_url import idna
>>> idna.encode('Bücher.example')
b'xn--bcher-kva.example'
>>> idna.decode(b'xn--bcher-kva.example')
'bücher.example'

WHATWG URL 兼容性

此库符合 WHATWG URL 规范。这意味着,在许多其他方面,它正确地编码了 IDN 并解析了路径

>>> from ada_url import URL
>>> parsed_url = URL('https://www.GOoglé.com/./path/../path2/')
>>> parsed_url.hostname
'www.xn--googl-fsa.com'
>>> parsed_url.pathname
'/path2/'

与 Python 标准库的 urlib.parse 模块相比

>>> from urllib.parse import urlparse
>>> parsed_url = urlparse('https://www.GOoglé.com/./path/../path2/')
>>> parsed_url.hostname
'www.googlé.com'
>>> parsed_url.path
'/./path/../path2/'

替代 Python 绑定

此软件包使用 CFFI 调用 Ada 库的函数,这会带来性能成本。替代的 can_ada(加拿大 Ada)软件包使用 pybind11 生成 Python 扩展模块,性能更佳。

项目详情


下载文件

下载适合您平台的文件。如果您不确定要选择哪个,请了解有关 安装软件包 的更多信息。

源代码分发

ada_url-1.15.3.tar.gz (217.4 kB 查看哈希值

上传时间 源代码

构建分发

ada_url-1.15.3-pp310-pypy310_pp73-win_amd64.whl (389.4 kB 查看哈希值

上传时间 PyPy Windows x86-64

ada_url-1.15.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (442.6 kB 查看哈希值

上传于 PyPy manylinux: glibc 2.17+ x86-64

ada_url-1.15.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (440.3 kB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ ARM64

ada_url-1.15.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl (404.1 kB 查看哈希值)

上传于 PyPy macOS 11.0+ ARM64

ada_url-1.15.3-pp310-pypy310_pp73-macosx_10_15_x86_64.whl (406.6 kB 查看哈希值)

上传于 PyPy macOS 10.15+ x86-64

ada_url-1.15.3-pp39-pypy39_pp73-win_amd64.whl (389.4 kB 查看哈希值)

上传于 PyPy Windows x86-64

ada_url-1.15.3-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (442.6 kB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ x86-64

ada_url-1.15.3-pp39-pypy39_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (440.3 kB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ ARM64

ada_url-1.15.3-pp39-pypy39_pp73-macosx_11_0_arm64.whl (404.1 kB 查看哈希值)

上传于 PyPy macOS 11.0+ ARM64

ada_url-1.15.3-pp39-pypy39_pp73-macosx_10_15_x86_64.whl (406.5 kB 查看哈希值)

上传于 PyPy macOS 10.15+ x86-64

ada_url-1.15.3-pp38-pypy38_pp73-win_amd64.whl (370.3 kB 查看哈希值)

上传于 PyPy Windows x86-64

ada_url-1.15.3-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (442.6 kB 查看哈希值)

上传于 PyPy manylinux: glibc 2.17+ x86-64

ada_url-1.15.3-pp38-pypy38_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (440.3 kB 查看哈希值)

上传时间 PyPy manylinux: glibc 2.17+ ARM64

ada_url-1.15.3-pp38-pypy38_pp73-macosx_11_0_arm64.whl (404.1 kB 查看哈希值)

上传时间 PyPy macOS 11.0+ ARM64

ada_url-1.15.3-pp38-pypy38_pp73-macosx_10_15_x86_64.whl (406.5 kB 查看哈希值)

上传时间 PyPy macOS 10.15+ x86-64

ada_url-1.15.3-cp312-cp312-win_amd64.whl (380.7 kB 查看哈希值)

上传时间 CPython 3.12 Windows x86-64

ada_url-1.15.3-cp312-cp312-musllinux_1_2_x86_64.whl (2.6 MB 查看哈希值)

上传时间 CPython 3.12 musllinux: musl 1.2+ x86-64

ada_url-1.15.3-cp312-cp312-musllinux_1_2_aarch64.whl (2.5 MB 查看哈希值)

上传时间 CPython 3.12 musllinux: musl 1.2+ ARM64

ada_url-1.15.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.6 MB 查看哈希值)

上传时间 CPython 3.12 manylinux: glibc 2.17+ x86-64

ada_url-1.15.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.6 MB 查看哈希值)

上传时间 CPython 3.12 manylinux: glibc 2.17+ ARM64

ada_url-1.15.3-cp312-cp312-macosx_11_0_arm64.whl (421.4 kB 查看哈希值)

上传时间 CPython 3.12 macOS 11.0+ ARM64

ada_url-1.15.3-cp312-cp312-macosx_10_15_x86_64.whl (428.5 kB 查看哈希值)

上传时间 CPython 3.12 macOS 10.15+ x86-64

ada_url-1.15.3-cp312-cp312-macosx_10_15_universal2.whl (634.6 kB 查看哈希值)

上传时间: CPython 3.12 macOS 10.15+ universal2 (ARM64, x86-64)

ada_url-1.15.3-cp311-cp311-win_amd64.whl (380.6 kB 查看哈希值)

上传时间: CPython 3.11 Windows x86-64

ada_url-1.15.3-cp311-cp311-musllinux_1_2_x86_64.whl (2.6 MB 查看哈希值)

上传时间: CPython 3.11 musllinux: musl 1.2+ x86-64

ada_url-1.15.3-cp311-cp311-musllinux_1_2_aarch64.whl (2.5 MB 查看哈希值)

上传时间: CPython 3.11 musllinux: musl 1.2+ ARM64

ada_url-1.15.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.6 MB 查看哈希值)

上传时间: CPython 3.11 manylinux: glibc 2.17+ x86-64

ada_url-1.15.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.6 MB 查看哈希值)

上传时间: CPython 3.11 manylinux: glibc 2.17+ ARM64

ada_url-1.15.3-cp311-cp311-macosx_11_0_arm64.whl (421.3 kB 查看哈希值)

上传时间: CPython 3.11 macOS 11.0+ ARM64

ada_url-1.15.3-cp311-cp311-macosx_10_15_x86_64.whl (428.4 kB 查看哈希值)

上传时间: CPython 3.11 macOS 10.15+ x86-64

ada_url-1.15.3-cp311-cp311-macosx_10_15_universal2.whl (634.5 kB 查看哈希值)

上传时间: CPython 3.11 macOS 10.15+ universal2 (ARM64, x86-64)

ada_url-1.15.3-cp310-cp310-win_amd64.whl (380.6 kB 查看哈希值)

上传时间: CPython 3.10 Windows x86-64

ada_url-1.15.3-cp310-cp310-musllinux_1_2_x86_64.whl (2.6 MB 查看哈希)

上传时间 CPython 3.10 musllinux: musl 1.2+ x86_64

ada_url-1.15.3-cp310-cp310-musllinux_1_2_aarch64.whl (2.5 MB 查看哈希)

上传时间 CPython 3.10 musllinux: musl 1.2+ ARM64

ada_url-1.15.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.6 MB 查看哈希)

上传时间 CPython 3.10 manylinux: glibc 2.17+ x86_64

ada_url-1.15.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.6 MB 查看哈希)

上传时间 CPython 3.10 manylinux: glibc 2.17+ ARM64

ada_url-1.15.3-cp310-cp310-macosx_11_0_arm64.whl (421.3 kB 查看哈希)

上传时间 CPython 3.10 macOS 11.0+ ARM64

ada_url-1.15.3-cp310-cp310-macosx_10_15_x86_64.whl (428.4 kB 查看哈希)

上传时间 CPython 3.10 macOS 10.15+ x86_64

ada_url-1.15.3-cp310-cp310-macosx_10_15_universal2.whl (634.5 kB 查看哈希)

上传时间 CPython 3.10 macOS 10.15+ universal2 (ARM64, x86-64)

ada_url-1.15.3-cp39-cp39-win_amd64.whl (380.6 kB 查看哈希)

上传时间 CPython 3.9 Windows x86-64

ada_url-1.15.3-cp39-cp39-musllinux_1_2_x86_64.whl (2.6 MB 查看哈希)

上传时间 CPython 3.9 musllinux: musl 1.2+ x86_64

ada_url-1.15.3-cp39-cp39-musllinux_1_2_aarch64.whl (2.5 MB 查看哈希)

上传时间 CPython 3.9 musllinux: musl 1.2+ ARM64

ada_url-1.15.3-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.6 MB 查看哈希)

上传时间 CPython 3.9 manylinux: glibc 2.17+ x86_64

ada_url-1.15.3-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.6 MB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.17+ ARM64

ada_url-1.15.3-cp39-cp39-macosx_11_0_arm64.whl (421.3 kB 查看哈希值)

上传于 CPython 3.9 macOS 11.0+ ARM64

ada_url-1.15.3-cp39-cp39-macosx_10_15_x86_64.whl (428.4 kB 查看哈希值)

上传于 CPython 3.9 macOS 10.15+ x86-64

ada_url-1.15.3-cp39-cp39-macosx_10_15_universal2.whl (634.5 kB 查看哈希值)

上传于 CPython 3.9 macOS 10.15+ universal2 (ARM64, x86-64)

ada_url-1.15.3-cp38-cp38-win_amd64.whl (380.6 kB 查看哈希值)

上传于 CPython 3.8 Windows x86-64

ada_url-1.15.3-cp38-cp38-musllinux_1_2_x86_64.whl (2.6 MB 查看哈希值)

上传于 CPython 3.8 musllinux: musl 1.2+ x86-64

ada_url-1.15.3-cp38-cp38-musllinux_1_2_aarch64.whl (2.5 MB 查看哈希值)

上传于 CPython 3.8 musllinux: musl 1.2+ ARM64

ada_url-1.15.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.6 MB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ x86-64

ada_url-1.15.3-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (1.6 MB 查看哈希值)

上传于 CPython 3.8 manylinux: glibc 2.17+ ARM64

ada_url-1.15.3-cp38-cp38-macosx_11_0_arm64.whl (421.3 kB 查看哈希值)

上传于 CPython 3.8 macOS 11.0+ ARM64

ada_url-1.15.3-cp38-cp38-macosx_10_15_x86_64.whl (428.4 kB 查看哈希值)

上传时间 CPython 3.8 macOS 10.15+ x86_64

ada_url-1.15.3-cp38-cp38-macosx_10_15_universal2.whl (634.5 kB 查看哈希值)

上传时间 CPython 3.8 macOS 10.15+ universal2 (ARM64, x86_64)

支持者: