Frage

Ich bin mit dem mechanize Modul einigen Web-Anfragen von Python auszuführen. Ich mag mein Programm seinen fehler robust und behandelt alle Arten von Fehlern (falsche URLs, 403/404 responsese) anmutig. Allerdings kann ich nicht in mechanize der Dokumentation finden Sie die Fehler / Ausnahmen für verschiedene Fehler führt.

Ich nenne es einfach mit:

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

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

Wie kann ich wissen, welche Fehler / Ausnahmen hier geworfen werden können und mit ihnen umgehen?

War es hilfreich?

Lösung

$ 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',

Oder:

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

Andere Tipps

Während dies vor langer Zeit geschrieben wurde, ich denke, es ist immer noch eine Notwendigkeit, die Frage richtig zu beantworten, da es in der Google-Suchergebnissen nur auf diese Frage kommt.

Während ich dies schreibe, mechanisieren ( Version = (0, 1, 11, None, None)) in Python 265 urllib2.HTTPError erhöht und so der http-Status ist über diese Ausnahme abfangen, zB:

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

Ich fand diese in ihre docs:

  

Eine letzte Sache zu beachten ist, dass es   sind einige allumfassende kahl außer:   Anweisungen in dem Modul, das ist   es unerwarteten schlechten Eingang zu handhaben   ohne Ihr Programm abstürzt. wenn diese   geschieht, es ist ein Fehler in mechanize ist, so   Bitte mailen Sie mir den Warntext.

Also habe ich sie erraten keine Ausnahmen machen. Sie können auch den Quellcode für Exception-Subklassen suchen und sehen, wie sie verwendet werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top