如何使用Python检索附加的gzip压缩文件{requests,urllib4,mechanize ...}

时间:2014-08-02 00:59:24

标签: python json gzip

我有一个现有的应用程序,它使用PyCurl通过REST类型接口下载gzip压缩的JSON数据。这种方法效果很好,但对于所需的用途来说太慢了。

我试图获得可以使用连接池的等效解决方案。我有一个处理请求的简单示例,但我不知道如何检索返回的标头所说的附加gzip压缩文件。

我目前的示例代码:

#!/usr/bin/python

import requests

headers = {"Authorization" :  "XXX thisworksIgeta200Response",
      "Content-type" : "application/json",
       "Accept" : "application/json"}

r = requests.get("https://longickyGUIDyURL.noname.com",headers=headers,verify=False,stream=True)

data = r.raw.read(decode_content=True)

print data

这会产生一个HTML页面,而不是我想要的JSON输出。相关的返回标题如下所示:

'content-disposition': 'attachment; filename="9d5c3c68-0e88-4b2d-88b9-94534b6cb80d"
'content-encoding': 'gzip',

所以:请求或urllib4(尝试了一下,但没有看到很多示例或大量文档)或其他什么?

欢迎任何指导或建议!

1 个答案:

答案 0 :(得分:0)

  

如果用户请求将内容保存到文件中,则建议使用Content-Disposition response-header字段作为原始服务器建议默认文件名的方法(rfc2616)

标题中的文件名只不过是浏览器应该将其保存为的建议。那里没有其他文件。你得到的内容就是全部。 content-encoding: gzip标头意味着页面的内容是gzip编码的传输,但requests模块将为您解码。

因此,如果它是HTML并且你期待JSON,那么你可能有错误的URL。