在获取zk节点时,有些子节点名字直接就是编码后的url,就像下面这行一样:
<=坝镅詐ython代码类> url='达博% 3 a % 2 f % 2 f10.4.5.3 % 3 a20880 % 2 fcom.welab.authority.service.authorityservice % 3 fanyhost % 3 dtrue % 26应用% 3 dwelab-authority % 26达博% 3 d2.5.7”代码>
先需要把这个url里进行解码,转成如下这种:
<代码>达博://10.4.5.3:20880/com.welab.authority.service.AuthorityService ? anyhost=true&应用程序=welab-authority&达博=2.5.7 代码>
然后有用的参数:url中的ip地址,参数中应用对应的值
Python2解码与提取参数
,<代码>祝辞的在比;进口urlparse 在在在urldata=https://www.yisu.com/zixun/urlparse.unquote (url)>>打印urldata 达博://10.4.5.3:20880/com.welab.authority.service.AuthorityService ? anyhost=true&application=welab-authority&dubbo=2.5.7 #转成一个格式化对象>>结果=urlparse.urlparse (urldata)>>打印结果 ParseResult(计划=达博,netloc=10.4.5.3:20880,路径='/com.welab.authority.service。AuthorityService " params="、查询=' anyhost=true&应用程序=welab-authority&达博=2.5.7 ',片段=") #提取url中的参数,即url中?后的内容 在在在args=urlparse.parse_qs (result.query) 在在在打印参数 {“应用程序”:“welab-authority”,“anyhost”:“真正的”,“达博”:[' 2.5.7 ']} #获取我想要的信息 在在在ip=result.netloc 在在在应用=args.get(“应用程序”,[]) 在在在打印的ip 10.4.5.3:20880 在在在打印应用程序 [' welab-authority '] 代码>
Python3解码与提取参数
上面的测试中详细打印了输出信息,这次就直接写在py脚本里了。
<代码类="语言python ">从urllib进口解析 # url解码 urldata=https://www.yisu.com/zixun/parse.unquote (urldata) # url结果 结果=parse.urlparse (urldata) # url里的查询参数 query_dict=parse.parse_qs (result.query) #获取我需要的信息 ip=result.netloc 应用=query_dict.get(“应用程序”,[]) 代码>