如何用Python获取附加的gzipped JSON文件 {requests, urllib4, mechanize ...}
我有一个现有的应用程序,它使用PyCurl通过REST接口下载压缩的JSON数据。这个方法虽然能用,但速度太慢,不符合我的需求。
我想找一个类似的解决方案,可以使用连接池。我用requests库做了一个简单的例子,但我不知道怎么获取返回的头信息里提到的那个压缩的JSON文件。
我现在的示例代码是:
#!/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',
所以,我该用requests还是urllib4(我试过这个,但没找到很多例子或文档)或者其他什么方法呢?
任何建议或推荐都非常欢迎!
1 个回答
0
Content-Disposition这个响应头字段是用来让服务器建议一个默认的文件名,当用户请求将内容保存为文件时(参考rfc2616)。
这个头部里的文件名只是一个建议,告诉浏览器应该把文件保存成什么名字。实际上,服务器并没有其他文件,返回的内容就是全部。content-encoding: gzip
这个头部表示页面的内容在传输过程中经过了gzip压缩,但requests
模块会为你解压缩这些内容。
所以,如果你得到的是HTML内容,而你期待的是JSON格式,那你可能访问了错误的URL。