Python urlparse, правильный или неправильный?

Функция Python urlparse разбивает URL на шесть компонентов (схема, netloc, путь и другие вещи)

Теперь я обнаружил, что синтаксический анализ "example.com/path/file.ext" не возвращает netloc, но путь "example.com/path/file.ext".

Разве это не должно быть netloc = "example.com" и path = "/path/file.ext"?

Нам действительно нужен "://", чтобы определить, существует ли netloc?

Билет Python: http://bugs.python.org/issue8284

2 ответа

Решение

Без схемы:// нет гарантии, что example.com является доменом. Вы можете иметь каталог с именем example.com. Точно так же у вас может быть URL-адрес "omfgroflmao/path/file.ext". Как вы узнаете, является ли "omfgroflmao" компьютером в локальной сети (т. Е.NETloc) или же он является компонентом пути?

Я не вижу, что код Python на самом деле неправильный, но, возможно, документация должна четко описывать поведение в таких неоднозначных обстоятельствах (я не проверял).

example.com/path/file.ext это не URL. Это просто какая-то строка. Например, если вы положите <a href="example.com/path/file.ext"> на страницу HTML, он не будет ссылаться на http://example.com/path/file.ext, Это просто ярлык, предоставленный веб-браузерами, который не нужно добавлять в http://, Вы даже не можете использовать такой URL в качестве параметра для urllib2.urlopen() и аналогичные функции.

Другие вопросы по тегам