Python Urlparse
函数声明
urlparse.urlparse(urlstring[, scheme[, allow_fragments]])
将URL解析为六个组件,返回一个6元组。这对应于URL的一般结构:scheme:// netloc / path; parameters?query#fragment
。每个元组项都是一个字符串,可能是空的。组件不会在较小的部分分解(例如,网络位置是单个字符串),并且%转义不会展开。如上所示的分隔符不是结果的一部分,除了路径组件中的前导斜杠,如果存在则保留。
用法示例一:
>>>
>>> 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
时识别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。
返回值实际上是元组的子类的一个实例。此类具有以下附加的只读方便属性:
Attributes | Index | Value | Value if not present |
---|---|---|---|
scheme | 0 | URL scheme specifier | scheme parameter |
netloc | 1 | Network location part | empty string |
path | 2 | Hierarchical path | empty string |
params | 3 | Parameters for last path element | empty string |
query | 4 | Query component | empty string |
fragment | 5 | Fragment identifier | empty string |
username | User name | None | |
password | Password | None | |
hostname | Host name (lower case) | None | |
port | Port number as integer, if present | None |
有关结果对象的更多信息,请参阅urlparse()
和urlsplit()
的结果部分。
补充说明
-
2.5版本更改:添加属性返回值。
-
在版本2.7中更改:添加了IPv6 URL解析功能。