您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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 urlparse
import posixpath

def 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()
python 2022/1/1 18:48:40 有352人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶