Python urllib2, гарантирующий правильность URL - PullRequest
0 голосов
/ 26 ноября 2011

В ValueError: неизвестный тип URL-адреса в urllib2, хотя URL-адрес в порядке, если он открыт в браузере , было отмечено, что перед вызовом opener.open() вы должны убедиться, что URL-адрес, переданный ему, хорошо-formed (то есть - имеет префикс "http://" для URL-адресов HTTP," ftp: // "для FTP и т. д.).

Вопрос был уточнен, чтобы задать вопрос:" Можно ли обрабатывать такие случаи автоматически скакая-то встроенная функция, или я должен выполнить обработку ошибок с последующей конкатенацией строк? "Или, говоря по-другому: есть ли встроенный Python для этого?

Однако на этот уточненный вопрос так и не был дан ответ, поэтому-спросить здесь. Это достаточно легко сделать самому, но зачем изобретать велосипед правильно?

Ответы [ 2 ]

3 голосов
/ 26 ноября 2011

В Python довольно часто принимать и исключать, а не проверять значение заранее.Так что что-то вроде этого было бы идеально для меня и, вероятно, для большинства программистов на Python:

try:
    opener.open(url)
except ValueError,e:
    # fix url and try again
    # ...

Но я не понимаю, как бы вы хотели обрабатывать URL-адреса без префикса автоматически.Префикс определяет используемый протокол.Если это не дано, как бы вы «угадали» это?

0 голосов
/ 26 ноября 2011

Если вы хотите по умолчанию добавить http://, вам действительно нужно сделать это самостоятельно.Нет причины, почему это должно быть лучше, чем предварительная, например, gopher: или mailto: или news: - существует множество протоколов.

Просто потому, что веб-браузеры сегодня скрывают префикс http:// от своихпользователи не делают его устаревшим.

...