如何使用httplib / http.client获取传入响应的编码?
我可以看到使用getheaders()作为Content-Type的一部分,但我认为解析它是不好的做法,因为它可能是几种不同的格式,你应该在httplib /中使用特定的方法而不是http.client:
>>> r = h.getresponse()
>>> r.getheaders()
[('transfer-encoding', 'chunked'), ('expires', 'Tue, 11 Oct 1988 22:00:00 GMT'), ('vary', 'Accept-Encoding'), ('server', 'nginx/1.2.6'), ('connection', 'keep-alive'), ('pragma', 'no-cache'), ('cache-control', 'no-cache, must-revalidate'), ('date', 'Thu, 18 Apr 2013 00:46:18 GMT'), ('content-type', 'text/html; charset=utf-8')]
获取传入编码的最佳方法是什么?
答案 0 :(得分:0)
不是直接的答案,但也许你会觉得这很有用。 使用requests库。
人们有理由停止构建自己的http库。事实上,httplib甚至说使用urllib
使用http
库。请注意,请求使用urllib3。
>>> import requests
>>> r = requests.get("http://bitbucket.org")
dir>>> dir(r)
['__bool__', '__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__nonzero__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_content', '_content_consumed', 'apparent_encoding', 'close', 'connection', 'content', 'cookies', 'encoding', 'headers', 'history', 'iter_content', 'iter_lines', 'json', 'links', 'ok', 'raise_for_status', 'raw', 'reason', 'request', 'status_code', 'text', 'url']
>>> r.encoding
'utf-8'