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