[转载]Python2.7 urlparse学习

转自:http://my.oschina.net/guol/blog/95699php

urlparse模块主要是把url拆分为6部分,并返回元组。而且能够把拆分后的部分再组成一个url。主要有函数有urljoin、urlsplit、urlunsplit、urlparse等。 python

urlparse.urlparse(urlstring[, scheme[, allow_fragments]])服务器

    将urlstring解析成6个部分,它从urlstring中取得URL,并返回元组 (scheme, netloc, path, parameters, query, fragment),可是其实是基于namedtuple,是tuple的子类。它支持经过名字属性或者索引访问的部分URL,每一个组件是一串字符,也有多是空的。组件不能被解析为更小的部分,%后面的也不会被解析,分割符号并非解析结果的一部分,除非用斜线转义,注意,返回的这个元组很是有用,例如能够用来肯定网络协议(HTTP、FTP等等 )、服务器地址、文件路径,等等。网络

 

?
1
2
3
4
5
6
7
>>> import urlparse
>>> url = urlparse.urlparse( 'http://www.baidu.com/index.php?username=guol' )
>>> print url
ParseResult(scheme = 'http' , netloc = 'www.baidu.com' , path = '/index.php' , params = ' ', query=' username = guol ', fragment=' ')
>>> print url.netloc
www.baidu.com
>>>

urlparse.urlunparse(parts)函数

    从一个元组构建一个url,元组相似urlparse返回的,它接收元组(scheme, netloc, path, parameters, query, fragment)后,会从新组成一个具备正确格式的URL,以便供Python的其余HTML解析模块使用。url

 

?
1
2
3
4
5
6
7
>>> import urlparse
>>> url = urlparse.urlparse( 'http://www.baidu.com/index.php?username=guol' )
>>> print url
ParseResult(scheme = 'http' , netloc = 'www.baidu.com' , path = '/index.php' , params = ' ', query=' username = guol ', fragment=' ')
>>> u = urlparse.urlunparse(url)
>>> print u
http: / / www.baidu.com / index.php?username = guol

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

    主要是分析urlstring,返回一个包含5个字符串项目的元组:协议、位置、路径、查询、片断。allow_fragments为False时,该元组的组后一个项目老是空,无论urlstring有没有片断,省略项目的也是空。urlsplit()和urlparse()差很少。不过它不切分URL的参数。适用于遵循RFC2396的URL,每一个路径段都支持参数。这样返回的元组就只有5个元素。.net

 

?
1
2
3
4
5
6
7
>>> import urlparse
>>> url = urlparse.urlparse( 'http://www.baidu.com/index.php?username=guol' )
>>> print url
ParseResult(scheme = 'http' , netloc = 'www.baidu.com' , path = '/index.php' , params = ' ', query=' username = guol ', fragment=' ')
>>> url = urlparse.urlsplit( 'http://www.baidu.com/index.php?username=guol' )
>>> print url
SplitResult(scheme = 'http' , netloc = 'www.baidu.com' , path = '/index.php' , query = 'username=guol' , fragment = '')

urlparse.urlunsplit(parts)code

    urlunsplit使用urlsplit()返回的值组合成一个urlblog

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

    urljoin主要是拼接URL,它以base做为其基地址,而后与url中的相对地址相结合组成一个绝对URL地址。函数urljoin在经过为URL基地址附加新的文件名的方式来处理同一位置处的若干文件的时候格外有用。须要注意的是,若是基地址并不是以字符/结尾的话,那么URL基地址最右边部分就会被这个相对路径所替换。若是但愿在该路径中保留末端目录,应确保URL基地址以字符/结尾。

?
1
2
3
4
5
>>> import urlparse
>>> urlparse.urljoin( 'http://www.oschina.com/tieba' , 'index.php' )
'http://www.oschina.com/index.php'
>>> urlparse.urljoin( 'http://www.oschina.com/tieba/' , 'index.php' )
'http://www.oschina.com/tieba/index.php'
相关文章
相关标签/搜索