2016-12-27 38 views
0

我有一些DotNet代码可以解析并从URL字符串中检索值。Python代码解析并从URL字符串中检索值

但是,我想执行相同的功能,但现在使用python代码。

点网代码段低于:

string queryString = string.Empty; 
string application_id = string.Empty; 
string currentURL = Browser.getDriver.Url; 
Uri url = new Uri(currentURL); 
string query_String = url.Query; 
application_id = query_String.Split(new char[] { '=' }).Last(); 

预先感谢

+0

我们将需要更多的信息,你会从一个网络框架'Django'或'Flask'中运行你的代码?因为你的代码的最后一行在Python上几乎是一样的,所以我假设你想在python中使用整个funcionality:从检索URL去除它的id。 –

回答

1

总是最好的,如果使用标准库函数它们可用。 Python 3有urllib.parse(如果你仍然在Py2上,它是urlparse)。使用此模块的urlparse方法来提取URL的查询部分('?'之后的内容)。然后parse_qs将把此查询转换为key:list值的字典 - 值是列表来处理具有重复键的查询字符串。

url = 'http://www.somesite.blah/page?id=12345&attr=good&attr=bad&attr=ugly' 

try: 
    from urllib.parse import urlparse, parse_qs 
except ImportError: 
    # still using Python 2? time to move up 
    from urlparse import urlparse, parse_qs 

parts = urlparse(url) 
print(parts) 
query_dict = parse_qs(parts.query) 
print(query_dict) 
print(query_dict['id'][0]) 

打印:

ParseResult(scheme='http', netloc='www.somesite.blah', path='/page', params='', 
      query='id=12345&attr=good&attr=bad&attr=ugly', fragment='') 

{'attr': ['good', 'bad', 'ugly'], 'id': ['12345']} 
12345 
+0

Paul - 谢谢。你的解决方案有效 – Kenito

0

第一,最后= query_String.split( '=')

+0

如果查询字符串中有多个参数(如'“size = large&color = blue”'),则会发出错误。 – PaulMcG