请求解码gzip

时间:2015-09-30 15:17:16

标签: python-2.7 https gzip python-requests

我试图使用请求包从网站中提取大量文本文件,其中某些文件可以直接作为文本使用,而其他文件则是压缩文本文件。

tmpHtml = 'https://website.com/csv/pwr/someData.dat.gz'
tmpReq = requests.get(tmpHtml, proxies = proxy_w_auth, auth = (usr, pw))    

当我拉下未压缩的文件时,一切都运行良好但是当我拉出其中一个压缩文件时,我得到了很多以下内容:

'\x1f\x8b\x08\x08\xe5\xc6\xd9A\x00\x03someData.dat\x00\xa5\x9d\xcbn\x1c\xb9\x19\x85\xf7\x01\xf2\x0e\xfd\x00Q\xa9X,^j\xa9\xc8\x9a\xb1\x9dX\x16dM\x12/\r\x8c\x0712\x19\x0f\xb2\t\x02\xf4\xc3\xa7\xba\xeeM\x9e\x9f<\xa46s\x93\xf1\r\x8b\xfd\x7fl\x9e\xe2E/\xcfwo\x1eNo\xee^\x1e\xceo\x7f\xfa\xf3\xf9\xe9\xf9\xe3\x9b\x9f\xee_\xce\x9f^\x9e\xdf=\x9d\xef?>\xbe<\xdf\x8d\xff\xba\xfe\xc3\xe9\xe5\xf3\xd3\xc3\xf4\xc3\xbf\x8c\x7f{xy\xf9\xeb\xc3\x87\x87\xc7\x97\xd3\xd3\xf3\xbb\xfb\x87\xf3\xe3\xc3\xcb\xe9\xfe\xed\xdd\xe3\x8f\x0f\xe7\x87\x7f<\xbd{\xbe{y\xf7\xf1qb\xff\xf1\x0f\xeaV\xdfvmk\xce\xf7\xdf~;\xff\xf0\xed\xb7\xd3\xa7\xff~\xf9\xfd\xe6\xe9\xeb\x97\x7f\xfd\xe9\xf4\xc3\xd3\xe9\x97\xef\xff9]\x10\xeaV-\x7f\xec\xdd\xe3\xf9\x87\xf3\xb9W\x8d\xf6\xe7\x1b\xd3\xf4n\xfc\x99\x9e\x7fH\xd3\xba\x90f\x1ak\xce7\xbaQ\xe3\x8f:_\x06\xd31ldu\xe3_tq\xc3z\x91\xd5\xdfvC\x19\xcb\x84,\xdd\xb8\x11\xa6\x9a\xce\x8c?+m\x99\ri\xf6\xc2\xb9i\xc7\xa6\xd9[\xdd\x96\xc1\\\x003vn\xda\xf8\x83\xd2\xa7\xf4\x12\xca\x17?\xe2\x10u\xd8\xe5\xf9\xc6\xa7\x1c\x8a\x1fP\xb5

我可以在返回的字符串的开头看到文件名,但我不确定如何实际提取内容。根据请求文档,它应该自动解压缩gz文件吗?

http://requests.readthedocs.org/en/latest/community/faq/

响应对象看起来在标题中也有gzip:

{&#39;接受&#39;:&#39; / &#39;,&#39;连接&#39;:&#39;保持活力&#39;, &#39;接受编码&#39;:&#39; gzip,deflate&#39;,&#39; User-Agent&#39;:&#39; python-requests / 2.7.0 CPython / 2.7.10 Windows / 7&#39;}

我们非常感谢任何建议。

1 个答案:

答案 0 :(得分:0)

有时,Web客户端会在发送文件之前请求服务器压缩文件。请注意,不是.gz个文件,因为你不会压缩两次。这减少了文件大小,特别是对于大文本文件。然后,客户端在将其显示给用户之前自动解压缩。这就是您的问题中的请求文档所描述的内容。您不必为使用案例而担心这一点。

要解压缩gzip压缩文件,您必须使用gzip(标准库的一部分)在内存中解压缩它,或者以'wb'模式将其写入磁盘并使用gzip效用