2016-12-27 4 views
0

У меня есть код Dot Net, который анализирует и извлекает значение из строки URL.Код Python для анализа и извлечения значения из строки URL

Однако, я хотел бы выполнить ту же функцию, но вместо этого вместо этого использовать код для python.

Dot Net фрагмент кода ниже:

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: от получения URL-адреса, чтобы удалить его идентификатор. –

ответ

1

Всегда лучше использовать STD Lib функции, если они доступны. 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

Пол - Спасибо. Ваше решение работает. – Kenito

0

первый, последний = query_String.split ('=')

+0

Выдается сообщение об ошибке, если в строке запроса имеется более одного параметра (как в '' size = large & color = blue ''). – PaulMcG