Python3 url解碼與參數解析
有些子節點名字直接就是編碼后的url,就像下面這行一樣:
url='dubbo%3A%2F%2F10.4.5.3%3A20880%2Fcom.welab.authority.service.AuthorityService%3Fanyhost%3Dtrue%26application%3Dwelab-authority%26dubbo%3D2.5.7'
先需要把這個url里進行解碼, 轉成如下這種:
dubbo://10.4.5.3:20880/com.welab.authority.service.AuthorityService?anyhost=true&application=welab-authority&dubbo=2.5.7
然后有用的參數: url中的ip地址, 參數中application對應的值
Python2解碼與提取參數
>>> import urlparse
>>> urldata = urlparse.unquote(url)
>>> print urldata
dubbo://10.4.5.3:20880/com.welab.authority.service.AuthorityService?anyhost=true&application=welab-authority&dubbo=2.5.7
#轉成一個格式化對象
>>> result = urlparse.urlparse(urldata)
>>> print result
ParseResult(scheme='dubbo', netloc='10.4.5.3:20880', path='/com.welab.authority.service.AuthorityService', params='', query='anyhost=true&application=welab-authority&dubbo=2.5.7', fragment='')
#提取url中的參數,即url中?后的內容
>>> args = urlparse.parse_qs(result.query)
>>> print args
{'application': ['welab-authority'], 'anyhost': ['true'], 'dubbo': ['2.5.7']}
#獲取我想要的信息
>>> ip= result.netloc
>>> application = args.get('application',[])
>>> print ip
10.4.5.3:20880 >>> print application
['welab-authority']
Python3 解碼與提取參數
上面的測試中詳細打印了輸出信息, 這次就直接寫在py腳本里了。
from urllib import parse
#url解碼
urldata = parse.unquote(urldata)
#url結果
result = parse.urlparse(urldata)
#url里的查詢參數
query_dict = parse.parse_qs(result.query)
#獲取我需要的信息
ip = result.netloc
application = query_dict.get('application',[])