Вопрос

У меня мало проблема создания сценария, работающего с URL. Я использую URLLIB.URLOPEN (), чтобы получить содержимое желаемого URL. Но некоторые из этих URL требуют аутентификации. И Urlopen предлагает мне ввести в мое имя пользователя, а затем пароль. Что мне нужно, это игнорировать каждый URL-адрес, который потребует аутентификации, просто легко пропустить и продолжить, есть ли способ сделать это? Мне было интересно ловить исключение HTTPERROR, но на самом деле исключение обрабатывается методом Urlopen (), поэтому он не работает.

Спасибо за каждый ответ.

Это было полезно?

Решение

Вы правы в urllib2.HTTPError исключение:

exception urllib2.HTTPError

Хотя быть исключением (подкласс URLERROR), HTTPERROR также может функционировать как не исключительное возвращаемое значение, подобное файлованию (то же самое, что возвращает URLOPEN ()). Это полезно при обращении с экзотическими ошибками HTTP, такие как запросы на аутентификацию.

code

Код состояния HTTP, как определено в RFC 2616. Это числовое значение соответствует значению, найденному в словаре кодов, как найдено в BaseHtTPerver.basehttprequesthandhandler.rapsonses.

Атрибут кода исключения может быть использован для проверки необходимости аутентификации - код 401.

>>> try: 
...     conn = urllib2.urlopen('http://www.example.com/admin')
...     # read conn and process data
... except urllib2.HTTPError, x:
...     print 'Ignoring', x.code
...     
Ignoring 401
>>> 
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top