关于python 3.x:没有自动处理Accept-Encoding gzip,deflate?

No automatic handling for Accept-Encoding gzip, deflate?

本问题已经有最佳答案,请猛点这里访问。

我正在使用urllib.request。 如果我将Accept-Encoding设置为gizp, deflate,则返回的数据是压缩流,节省的流量为60%到80%。 是否有自动解压缩数据的选项,还是我必须自己处理? 如果是后者,有什么适合使用的工具?


我建议从urllib切换到requests。 它会自动处理gziped数据。

一个例子:

1
2
3
>>> r = requests.get('https://api.github.com/events')
>>> r.text
u'[{"id":"2978193412","type":"PushEvent","actor":{"id":13182197,"login":"ClothoWong","gravatar_id":"","url":"https://api.github.com/users/...

(为简洁起见)

上面,你看到了一些漂亮的,漂亮的JSON,但它实际上是使用GZIP编码下载的:

1
2
>>> r.raw.getheaders()['Content-Encoding']
'gzip'

(您还可以通过您最喜欢的浏览器开发人员工具确认端点是否使用gzip编码进行响应。)

在我看来,requests无论如何都是urllib的优越选择。 你最终会得到更少,更简单的代码来做同样的事情。