urllib игнорирует запросы аутентификации - PullRequest
0 голосов
/ 04 марта 2010

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

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

1 Ответ

1 голос
/ 04 марта 2010

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

exception urllib2.HTTPError

Будучи исключением (подкласс URLError), HTTPError также может функционировать как неисключительное возвращаемое в виде файла возвращаемое значение (то же самое, что возвращает urlopen ()). Это полезно при обработке экзотических ошибок HTTP, , таких как запросы на аутентификацию.

code

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

Атрибут кода исключения может использоваться для проверки необходимости аутентификации - код 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
>>> 
...