Python:如何解析包含“ ..”的URL

Python:如何解析包含“ ..”的URL,第1张

Python:如何解析包含“ ..”的URL

有一个简单的解决方案使用

urllib.parse.urljoin

>>> from urllib.parse import urljoin>>> urljoin('http://www.example.com/foo/bar/../../baz/bux/', '.')'http://www.example.com/baz/bux/'

但是,如果没有结尾斜杠(最后一个组件是文件,而不是目录),则最后一个组件将被删除。

此修复程序使用urlparse函数提取路径,然后使用(的posixpath版本)

os.path
对组件进行规范化。用斜杠补偿一个神秘的问题,然后将URL重新连接在一起。以下是
doctest
能够的:

from urllib.parse import urlparseimport posixpathdef resolve_components(url):    """    >>> resolve_components('http://www.example.com/foo/bar/../../baz/bux/')    'http://www.example.com/baz/bux/'    >>> resolve_components('http://www.example.com/some/path/../file.ext')    'http://www.example.com/some/file.ext'    """    parsed = urlparse(url)    new_path = posixpath.normpath(parsed.path)    if parsed.path.endswith('/'):        # Compensate for issue1707768        new_path += '/'    cleaned = parsed._replace(path=new_path)    return cleaned.geturl()


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5654162.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存