urlparse (Internet) – Python 中文开发手册 - Break易站

[
  •   Python 中文开发手册

    urlparse (Internet) - Python 中文开发手册

    注意

    该urlparse模块被重命名为urllib.parsePython 3. 当将源代码转换为Python 3时,2to3工具将自动适应导入。

    源代码: Lib / urlparse.py

    此模块定义了一个标准接口,用于打破组件中的统一资源定位符(URL)字符串(寻址方案,网络位置,路径等),将组件返回到URL字符串中,并将“相对URL”转换为给出“基本URL”的绝对URL。

    该模块已被设计为与相对统一资源定位符上的Internet RFC相匹配。它支持下列URL方案:file,ftp,gopher,hdl,http,https,imap,mailto,mms,news,nntp,prospero,rsync,rtsp,rtspu,sftp,shttp,sip,sips,snews,svn,svn+ssh,telnet,wais。

    2.5版新增功能:支持sftp和sips计划。

    该urlparse模块定义了以下功能:

    urlparse.urlparse(urlstring[, scheme[, allow_fragments]])

    将URL解析为六个组件,返回一个6元组。这对应于URL的一般结构:scheme://netloc/path;parameters?query#fragment。每个元组项都是一个字符串,可能是空的。组件不会在较小的部分中分解(例如,网络位置是单个字符串),并且%escapes不会扩展。上面显示的分隔符不是结果的一部分,除了路径组件中的前导斜杠(如果存在)保留。例如:

    >>> from urlparse import urlparse
    >>> o = urlparse('http://www.cwi.nl:80/%7Eguido/Python.html')
    >>> o   
    ParseResult(scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html',
                params='', query='', fragment='')
    >>> o.scheme
    'http'
    >>> o.port
    80
    >>> o.geturl()
    'http://www.cwi.nl:80/%7Eguido/Python.html'

    遵循RFC 1808中的语法规范,urlparse只有在“//”正确引入时才能识别netloc。否则,输入被假定为相对URL,因此以路径组件开始。

    >>> from urlparse import urlparse
    >>> urlparse('//www.cwi.nl:80/%7Eguido/Python.html')
    ParseResult(scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html',
               params='', query='', fragment='')
    >>> urlparse('www.cwi.nl/%7Eguido/Python.html')
    ParseResult(scheme='', netloc='', path='www.cwi.nl/%7Eguido/Python.html',
               params='', query='', fragment='')
    >>> urlparse('help/Python.html')
    ParseResult(scheme='', netloc='', path='help/Python.html', params='',
               query='', fragment='')

    如果指定了scheme参数,则会给出默认的寻址方案,仅在URL未指定时使用。该参数的默认值是空字符串。

    如果allow_fragments参数为false,则即使URL的寻址方案通常支持它们,也不会将片段标识符识别并解析为前一个组件的一部分。这个参数的默认值是True。

    返回值实际上是一个子类的实例tuple。该类具有以下额外的只读便利属性:

    属性

    指数

    价值如果不存在

    方案

    0

    URL方案说明符

    方案参数

    netloc

    1

    网络位置部分

    空字符串

    路径

    2

    分层路径

    空字符串

    PARAMS

    3

    最后一个路径元素的参数

    空字符串

    询问

    4

    查询组件

    空字符串

    分段

    5

    片段识别

    空字符串

    用户名

    用户名

    没有

    密码

    密码

    没有

    主机名

    主机名(小写)

    没有

    港口

    端口号为整数(如果存在)

    没有

    有关结果对象的更多信息,请参见urlparse()和urlsplit()的结果部分。

    在版本2.5中进行了更改:向返回值添加了属性。

    版本2.7中更改:增加了IPv6 URL解析功能。

    urlparse.parse_qs(qs[, keep_blank_values[, strict_parsing]])

    解析作为字符串参数给出的查询字符串(类型为application / x-www-form-urlencoded的数据)。数据作为字典返回。字典键是唯一的查询变量名称,值是每个名称的值列表。

    可选参数keep_blank_values是一个标志,指示百分比编码查询中的空白值是否应视为空白字符串。真值表示空白字符应保留为空白字符串。默认值为false表示空白值将被忽略并视为未被包含。

    可选参数strict_parsing是一个标志,指示如何解析错误。如果为false(默认值),则错误将被忽略。如果属实,错误会引发ValueError异常。

    使用该urllib.urlencode()函数将这些字典转换为查询字符串。

    版本2.6中的新功能:从cgi模块复制。

    urlparse.parse_qsl(qs[, keep_blank_values[, strict_parsing]])

    解析作为字符串参数给出的查询字符串(类型为application / x-www-form-urlencoded的数据)。数据以名称,值对的列表形式返回。

    可选参数keep_blank_values是一个标志,指示百分比编码查询中的空白值是否应视为空白字符串。真值表示空白字符应保留为空白字符串。默认值为false表示空白值将被忽略并视为未被包含。

    可选参数strict_parsing是一个标志,指示如何解析错误。如果为false(默认值),则错误将被忽略。如果属实,错误会引发ValueError异常。

    使用该urllib.urlencode()函数将这些对列表转换为查询字符串。

    版本2.6中的新功能:从cgi模块复制。

    urlparse.urlunparse(parts)

    从返回的元组构造一个URL urlparse()。该部分参数可以是任何六个项目迭代。如果最初解析的URL具有不必要的分隔符(例如,带有空查询的?; RFC声明它们是等同的),则这可能会导致稍微不同的但等同的URL。

    urlparse.urlsplit(urlstring[, scheme[, allow_fragments]])

    这与urlparse()URL 相似,但不会将参数分开。通常应该使用这种方法,而不是使用urlparse()允许将参数应用于URL 的路径部分的每个段(请参阅RFC 2396)的更新的URL语法。需要单独的功能来分隔路径段和参数。该函数返回一个5元组:(地址方案,网络位置,路径,查询,片段标识符)。

    返回值实际上是一个子类的实例tuple。该类具有以下额外的只读便利属性:

    属性

    指数

    价值如果不存在

    方案

    0

    URL方案说明符

    方案参数

    netloc

    1

    网络位置部分

    空字符串

    路径

    2

    分层路径

    空字符串

    询问

    3

    查询组件

    空字符串

    分段

    4

    片段识别

    空字符串

    用户名

    用户名

    没有

    密码

    密码

    没有

    主机名

    主机名(小写)

    没有

    港口

    端口号为整数(如果存在)

    没有

    有关结果对象的更多信息,请参见urlparse()和urlsplit()的结果部分。

    2.2版本中的新功能。

    在版本2.5中进行了更改:向返回值添加了属性。

    urlparse.urlunsplit(parts)

    将返回的元组元素合并urlsplit()为一个完整的URL作为字符串。该部分参数可以是任何五个项目的迭代。如果最初解析的URL具有不必要的分隔符(例如,带有空查询的?; RFC声明它们是等同的),则这可能会导致稍微不同的但等同的URL。

    2.2版本中的新功能。

    urlparse.urljoin(base, url[, allow_fragments])

    通过将“基本URL”(base)与另一个URL(url)组合起来构建完整(“绝对”)URL 。非正式地说,它使用基本URL的组件,特别是寻址方案,网络位置和路径(的一部分)来提供相关URL中缺失的组件。例如:

    >>> from urlparse import urljoin
    >>> urljoin('http://www.cwi.nl/%7Eguido/Python.html', 'FAQ.html')
    'http://www.cwi.nl/%7Eguido/FAQ.html'

    该allow_fragments参数具有相同的含义,默认为urlparse()。

    注意

    如果url是绝对URL(即以//or 开头scheme://),则url的主机名和/或方案将出现在结果中。例如:

    >>> urljoin('http://www.cwi.nl/%7Eguido/Python.html',
    ...         '//www.python.org/%7Eguido')
    'http://www.python.org/%7Eguido'

    如果您不想要这种行为,请使用和预处理url,urlsplit()并urlunsplit()删除可能的方案和netloc部分。

    urlparse.urldefrag(url)

    如果url包含片段标识符,则返回不带片段标识符的URL的修改版本,并将片段标识符作为单独的字符串返回。如果url中没有片段标识符,则返回未修改的url和一个空字符串。

    1. urlparse()和urlsplit()的结果

    urlparse()和urlsplit()函数的结果对象是该tuple类型的子类。这些子类添加这些函数中描述的属性,并提供其他方法:

    ParseResult.geturl()

    将原始URL的重新组合版本作为字符串返回。这可能与原始URL有所不同,因为该方案将始终归一化为小写,并且可能会删除空的组件。具体来说,将删除空参数,查询和片段标识符。

    如果通过原始解析函数传递回来,此方法的结果是一个固定点:

    >>> import urlparse
    >>> url = 'HTTP://www.Python.org/doc/#'
    >>> r1 = urlparse.urlsplit(url)
    >>> r1.geturl()
    'http://www.Python.org/doc/'
    >>> r2 = urlparse.urlsplit(r1.geturl())
    >>> r2.geturl()
    'http://www.Python.org/doc/'

    2.5版本中的新功能。

    以下类提供了解析结果的实现:

    class urlparse.ParseResult(scheme, netloc, path, params, query, fragment)

    urlparse()结果的具体类。

    class urlparse.SplitResult(scheme, netloc, path, query, fragment)

    urlsplit()结果的具体类。

  •   Python 中文开发手册
    ]
    转载请保留页面地址:https://www.breakyizhan.com/python/35337.html

    posted on 2020-07-13 21:12  MrAit  阅读(205)  评论(0编辑  收藏  举报

    导航