Uma boa maneira de obter o charset / codificação de uma resposta HTTP em Python
Procurando por uma maneira fácil de obter as informações de charset / codificação de uma resposta HTTP usando o Python urllib2 ou qualquer outra biblioteca Python.
>>> url = 'http://some.url.value'
>>> request = urllib2.Request(url)
>>> conn = urllib2.urlopen(request)
>>> response_encoding = ?
Eu sei que às vezes está presente no cabeçalho 'Content-Type', mas esse cabeçalho tem outras informações, e é incorporado em uma string que eu precisaria analisar. Por exemplo, o cabeçalho Content-Type retornado pelo Google é
>>> conn.headers.getheader('content-type')
'text/html; charset=utf-8'
Eu poderia trabalhar com isso, mas não tenho certeza de quão consistente o formato será. Tenho certeza que é possível que o charset esteja totalmente ausente, então eu teria que lidar com esse caso extremo. Algum tipo de operação de divisão de strings para obter o 'utf-8' parece ser a maneira errada de fazer esse tipo de coisa.
>>> content_type_header = conn.headers.getheader('content-type')
>>> if '=' in content_type_header:
>>> charset = content_type_header.split('=')[1]
Esse é o tipo de código que parece estar fazendo muito trabalho. Eu também não tenho certeza se isso funcionará em todos os casos. Alguém tem uma maneira melhor de fazer isso?