Python urlparse, правильный или неправильный? - PullRequest
4 голосов
/ 02 апреля 2010

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

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

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

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

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

Ответы [ 2 ]

6 голосов
/ 02 апреля 2010

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

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

1 голос
/ 02 апреля 2010

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

...