Una buena manera de obtener el conjunto de caracteres / codificación de una respuesta HTTP en Python

Buscando una manera fácil de obtener la información del conjunto de caracteres / codificación de una respuesta HTTP utilizando Python urllib2, o cualquier otra biblioteca de Python.

>>> url = 'http://some.url.value'
>>> request = urllib2.Request(url)
>>> conn = urllib2.urlopen(request)
>>> response_encoding = ?

Sé que a veces está presente en el encabezado "Tipo de contenido", pero ese encabezado tiene otra información y está incrustado en una cadena que necesitaría analizar. Por ejemplo, el encabezado Content-Type devuelto por Google es

>>> conn.headers.getheader('content-type')
'text/html; charset=utf-8'

Podría trabajar con eso, pero no estoy seguro de qué tan consistente será el formato. Estoy bastante seguro de que es posible que falte un charset por completo, así que tendría que manejar ese caso de borde. Parece que algún tipo de operación de división de cadenas para obtener el 'utf-8' es la forma incorrecta de hacer este tipo de cosas.

>>> content_type_header = conn.headers.getheader('content-type')
>>> if '=' in content_type_header:
>>>  charset = content_type_header.split('=')[1]

Ese es el tipo de código que parece que está haciendo demasiado trabajo. Tampoco estoy seguro de si funcionará en todos los casos. ¿Alguien tiene una mejor manera de hacer esto?

Respuestas a la pregunta(5)

Su respuesta a la pregunta