2010-04-01 1 views
4

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

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

Должно быть netloc = "example.com" и path = "/path/file.ext"?

Нужно ли нам «: //» определить, существует ли или нет netloc?

билет Пайтона: http://bugs.python.org/issue8284

ответ

6

Без схемы: //, нет гарантии, что example.com является доменом. У вас может быть каталог example.com. Аналогично, у вас может быть URL-адрес «omfgroflmao/path/file.ext», как вы узнаете, является ли «omfgroflmao» машиной в локальной сети (т. Е. Netloc) или он должен быть компонентом пути?

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

1

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

+1

но тогда у вас могло бы быть что-то вроде этого , и тогда что-то вроде example было бы правильно – Ben