当前位置: 首页>>技术教程>>正文


Python urlparse函数详解

qingchuan 技术教程 , 去评论

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解析功能。

本文由《纯净的天空》出品。文章地址: https://vimsky.com/article/3522.html,未经允许,请勿转载。