Códigos de error devueltos por urllib / urllib2 y la página real

el comportamiento normal de urllib / urllib2 es que si se envía un código de error en el encabezado de la respuesta (es decir, 404), se genera una excepción.

¿Cómo buscar errores específicos, es decir, (40x o 50x) en función de los diferentes errores, hacer cosas diferentes. Además, ¿cómo leer los datos reales que se devuelven HTML / JSON, etc.? (Los datos generalmente tienen detalles de error que son diferentes al código de error HTML)

Respuestas a la pregunta(2)

Su respuesta a la pregunta