Вопрос

я использую mechanize модуль для выполнения некоторых веб-запросов из Python.Я хочу, чтобы моя программа была устойчивой к ошибкам и корректно обрабатывала все виды ошибок (неправильные URL-адреса, ответы 403/404).Однако я не могу найти в документации mechanize ошибки/исключения, которые он выдает при различных ошибках.

Я просто называю это:

    self.browser = mechanize.Browser()
    self.browser.addheaders = [('User-agent', browser_header)]

    self.browser.open(query_url)
    self.result_page = self.browser.response().read()

Как я могу узнать, какие ошибки/исключения могут возникнуть здесь, и обработать их?

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

Решение

$ perl -0777 -ne'print qq($1) if /__all__ = \[(.*?)\]/s' __init__.py | grep Error 

'BrowserStateError',
'ContentTooShortError',
'FormNotFoundError',
'GopherError',
'HTTPDefaultErrorHandler',
'HTTPError',
'HTTPErrorProcessor',
'LinkNotFoundError',
'LoadError',
'ParseError',
'RobotExclusionError',
'URLError',

Или:

>>> import mechanize
>>> filter(lambda s: "Error" in s, dir(mechanize))
['BrowserStateError', 'ContentTooShortError', 'FormNotFoundError', 'GopherError'
, 'HTTPDefaultErrorHandler', 'HTTPError', 'HTTPErrorProcessor', 'LinkNotFoundErr
or', 'LoadError', 'ParseError', 'RobotExclusionError', 'URLError']

Другие советы

Хотя это было опубликовано уже давно, я думаю, что все еще необходимо правильно ответить на этот вопрос, поскольку он появляется в результатах поиска Google по этому самому вопросу.

Пока я это пишу, механизируйте(версия = (0, 1, 11, None, None)) в Python 265 вызывает urllib2.HTTPError, поэтому статус http доступен путем перехвата этого исключения, например:

import urllib2
try:
...  br.open("http://www.example.org/invalid-page")
... except urllib2.HTTPError, e:
...  print e.code
... 
404

Я нашел это в их документах:

Последнее, что нужно отметить, это то, что есть какая-то общеобразное, кроме:операторы в модуле, которые должны обрабатывать неожиданный плохой ввод без сбоя вашей программы.Если это произойдет, это ошибка в Mechanize, поэтому, пожалуйста, отправьте мне предупреждающий текст.

Так что я думаю, они не делают никаких исключений.Вы также можете выполнить поиск в исходном коде подклассов Exception и посмотреть, как они используются.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top