Как я могу добавить http к url, если он не начинается с http?
У меня есть URL-адреса в формате:
google.com
www.google.com
http://google.com
http://www.google.com
Я хотел бы преобразовать все типы ссылок в единый формат, начиная с http://
http://google.com
Как я могу добавлять URL-адреса перед http://
с помощью Python?
2 ответа:
У Python есть встроенные функции для корректной обработки, например
p = urlparse.urlparse(my_url, 'http') netloc = p.netloc or p.path path = p.path if p.netloc else '' if not netloc.startswith('www.'): netloc = 'www.' + netloc p = urlparse.ParseResult('http', netloc, path, *p[3:]) print(p.geturl())
Если вы хотите удалить (или добавить) часть
www
, Вы должны отредактировать поле.netloc
результирующего объекта перед вызовом.geturl()
.Поскольку
ParseResult
является namedtuple, вы не можете редактировать его на месте, но должны создать новый объект.PS:
Для Python3 это должно быть
urllib.parse.urlparse
Для форматов, которые вы упоминаете в своем вопросе, вы можете сделать что-то очень простое, например:
Но, пожалуйста, обратите внимание, что есть, вероятно, и другие форматы, которые вы не ожидаете. Кроме того, имейте в виду, что выходной URL-адрес (в соответствии с вашими определениями) не обязательно будет действительным (т. е. DNS не сможет перевести его в действительный IP-адрес).def convert(url): if url.startswith('http://www.'): return 'http://' + url[len('http://www.'):] if url.startswith('www.'): return 'http://' + url[len('www.'):] if not url.startswith('http://'): return 'http://' + url return url