Я использую URL в качестве ключа, поэтому мне нужно, чтобы они были последовательными и чистыми. Мне нужна функция Python, которая возьмет URL-адрес и очистит его, чтобы я мог получить из БД. Например, потребуется следующее:
example.com example.com/ http://example.com/ http://example.com http://example.com? http://example.com/? http://example.com//
и выведите чистую консистентную версию:
http://example.com/
Я просмотрел std libs и github и не смог найти ничего подобного
Обновление
Я не смог найти библиотеку Python, которая реализует все, что обсуждалось здесь и в RFC:
http://en.wikipedia.org/wiki/URL_normalization
Так что я пишу один сейчас. Это гораздо больше, чем я мог себе представить.
Взгляните на urlparse.urlparse(). У меня был хороший успех.
urlparse.urlparse()
note : Этот ответ с 2011 года относится только к Python2. В Python3 модуль urlparse был назван urllib.parse. Соответствующую документацию Python3 для urllib.parse можно найти здесь:
urlparse
urllib.parse
https://docs.python.org/3/library/urllib.parse.html
Это сделано в Scrapy :
http://nullege.com/codes/search/scrapy.utils.url.canonicalize_url
Канонизируйте данный URL, применяя следующие процедуры: сортировка аргументов запроса, сначала по ключу, затем по значению процентов кодируют пути и аргументы запроса. символы не ASCII кодируются в процентах с использованием UTF-8 (RFC-3986) нормализует все пробелы (в аргументах запроса) '+' (символ плюс) нормализовать регистр процентного кодирования (% 2f ->% 2F) удалить аргументы запроса с пустыми значениями (если keep_blank_values не имеет значение True) удалить фрагменты (если keep_fragments имеет значение True)
Канонизируйте данный URL, применяя следующие процедуры:
Рассматривали ли вы использование регулярных xpressions?Они помогут вам проверить неправильно сформированные URL-адреса.Я использовал это в одном из своих приложений
"^ [, .a-zA-Z0-9] * $"