非常教程

Python参考手册

网络 | Internet

urlparse

注意

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

源代码: Lib / urlparse.py

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

该模块已被设计为与相对统一资源定位符上的Internet RFC相匹配。它支持下列URL方案:fileftpgopherhdlhttphttpsimapmailtommsnewsnntpprosperorsyncrtsprtspusftpshttpsipsipssnewssvnsvn+sshtelnetwais

2.5版新增功能:支持sftpsips计划。

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'

如果您不想要这种行为,请使用和预处理urlurlsplit()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

Python 是一种面向对象的解释型计算机程序设计语言,由荷兰人 Guido van Rossum 于1989年发明,第一个公开发行版发行于1991年。 Python 是纯粹的自由软件, 源代码和解释器 CPython 遵循 GPL 协议。Python 语法简洁清晰,特色之一是强制用空白符( white space )作为语句缩进。

主页 https://www.python.org/
源码 https://github.com/python/cpython
版本 2.7
发布版本 2.7.13

Python目录

1.内置常量 | Built-in Constants
2.内置例外 | Built-in Exceptions
3.内置函数 | Built-in Functions
4.内置类型 | Built-in Types
5.编译器 | Compiler
6.加密 | Cryptography
7.数据压缩 | Data Compression
8.数据持久性 | Data Persistence
9.数据类型 | Data Types
10.调试和分析 | Debugging & Profiling
11.开发工具 | Development Tools
12.文件和目录访问 | File & Directory Access
13.文件格式 | File Formats
14.构架 | Frameworks
15.输入 | Importing
16.输入/输出 | Input/ouput
17.国际化 | Internationalization
18.网络 | Internet
19.网络数据 | Internet Data
20.翻译 | Interpreters
21.语言 | Language
22.记录 | Logging
23.Mac OS
24.MS Windows
25.多媒体 | Multimedia
26.联网 | Networking
27.数字与数学 | Numeric & Mathematical
28.操作系统 | Operating System
29.可选操作系统 | Optional Operating System
30.限制执行 | Restricted Execution
31.运行 | Runtime
32.SGI IRIX
33.软件包装与分销 | Software Packaging & Distribution
34.字符串 | String
35.结构化标记 | Structured Markup
36.Tk
37.Unix
38.Python 简介
39.Python pass 语句
40.Python 循环嵌套
41.Python 运算符
42.Python log10() 函数
43.Python log() 函数
44.Python floor() 函数
45.Python fabs() 函数
46.Python exp() 函数
47.Python cmp() 函数
48.Python ceil() 函数
49.Python abs() 函数
50.Python Number(数字)
51.Python pow() 函数
52.Python modf() 函数
53.Python min() 函数
54.Python max() 函数
55.Python asin() 函数
56.Python acos() 函数
57.Python uniform() 函数
58.Python shuffle() 函数
59.Python seed() 函数
60.Python random() 函数
61.Python randrange() 函数
62.Python choice() 函数
63.Python sqrt() 函数
64.Python round() 函数
65.Python radians() 函数
66.Python degrees() 函数
67.Python tan() 函数
68.Python sin() 函数
69.Python hypot() 函数
70.Python cos() 函数
71.Python atan2() 函数
72.Python atan() 函数
73.Python 元组
74.Python 列表(List)
75.Python 字符串
76.Python 字典(Dictionary)
77.Python 日期和时间
78.Python 函数
79.Python 模块
80.Python capitalize()方法
81.Python center()方法
82.Python count() 方法
83.Python expandtabs()方法
84.Python endswith()方法
85.Python encode()方法
86.Python decode()方法
87.Python find()方法
88.Python index()方法
89.Python 异常处理
90.Python isspace()方法
91.Python isnumeric()方法
92.Python islower()方法
93.Python isdigit()方法
94.Python isalpha()方法
95.Python isalnum()方法
96.Python isupper()方法
97.Python istitle()方法
98.Python min()方法
99.Python max()方法
100.Python maketrans()方法