我想寻找一种简单的方法,在使用Python urllib2或任何其他Python库时获取HTTP响应的字符集/编码信息。
>>> url = 'http://some.url.value'
>>> request = urllib2.Request(url)
>>> conn = urllib2.urlopen(request)
>>> response_encoding = ?
我知道有时候会在“Content-Type”标头中出现,但该标头包含其他信息,并且它嵌入在需要解析的字符串中。例如,Google返回的Content-Type标头是:
>>> conn.headers.getheader('content-type')
'text/html; charset=utf-8'
我可以使用这个,但是我不确定格式会有多一致。我很确定字符集可能完全缺失,所以我必须处理这种边缘情况。似乎进行某种字符串分割操作来获取“utf-8”似乎是错误的做法。
>>> content_type_header = conn.headers.getheader('content-type')
>>> if '=' in content_type_header:
>>> charset = content_type_header.split('=')[1]
这种代码看起来好像做了太多的工作,而且我也不确定它在所有情况下都能正常工作。有没有更好的方法可以实现同样的功能呢?
requests.Response.apparent_encoding
。 - bubak