1、获取url参数。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
>>> from urllib import parse
>>> url = r 'https://docs.python.org/3.5/search.html?q=parse&check_keywords=yes&area=default'
>>> parseResult = parse.urlparse(url)
>>> parseResult ParseResult(scheme = 'https' , netloc = 'docs.python.org' , path = '/3.5/search.html' , params = ' ', query=' q = parse&check_keywords = yes&area = default ', fragment=' ')
>>> param_dict = parse.parse_qs(parseResult.query)
>>> param_dict { 'q' : [ 'parse' ], 'check_keywords' : [ 'yes' ], 'area' : [ 'default' ]}
>>> q = param_dict[ 'q' ][ 0 ]
>>> q 'parse' #注意:加号会被解码,可能有时并不是我们想要的 >>> parse.parse_qs( 'proxy=183.222.102.178:8080&task=XXXXX|5-3+2' )
{ 'proxy' : [ '183.222.102.178:8080' ], 'task' : [ 'XXXXX|5-3 2' ]}
|
1
2
3
4
5
6
7
|
>>> from urllib import parse
>>> parse.parse_qs( 'action=addblog&job=modify&tid=1766670' )
{ 'tid' : [ '1766670' ], 'action' : [ 'addblog' ], 'job' : [ 'modify' ]} #注意和第三个并不一样
>>> parse.parse_qsl( 'action=addblog&job=modify&tid=1766670' )
[( 'action' , 'addblog' ), ( 'job' , 'modify' ), ( 'tid' , '1766670' )]
>>> dict (parse.parse_qsl( 'action=addblog&job=modify&tid=1766670' )) #注意和第一个并不一样
{ 'tid' : '1766670' , 'action' : 'addblog' , 'job' : 'modify' }
|
1
2
3
4
5
6
7
|
>>> from urllib import parse
>>> query = {
'name' : 'walker' ,
'age' : 99 ,
}
>>> parse.urlencode(query) 'name=walker&age=99' |
1
2
3
4
5
|
>>> from urllib import parse
>>> parse.quote( 'a&b/c' ) #未编码斜线
'a%26b/c' >>> parse.quote_plus( 'a&b/c' ) #编码了斜线
'a%26b%2Fc' |
1
2
3
4
5
|
from urllib import parse
>>> parse.unquote( '1+2' ) #不解码加号
'1+2' >>> parse.unquote( '1+2' ) #把加号解码为空格
'1 2' |
如果你还想问为什么没有urldecode——再把示例1看五遍。^_^
相关阅读:
1、urllib.parse — Parse URLs into components
2、Binary-to-text encoding (各种base编码。base58、base64等)
*** walker ***
本文转自walker snapshot博客51CTO博客,原文链接http://blog.51cto.com/walkerqt/1766670如需转载请自行联系原作者
RQSLT