2016-12-27 33 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