在Python的requests库中,如果遇到需要处理压缩内容的场景,可以使用response.content
来获取原始的响应内容,然后根据实际的压缩格式进行解压。以下是一些常见压缩格式的处理方法:
gzip压缩:
如果服务器返回的内容是gzip压缩的,可以使用Python的gzip
模块来解压。
import requests
import gzip
from io import BytesIO
url = 'http://example.com/compressed-content'
response = requests.get(url)
# 检查响应头是否指示gzip压缩
if 'gzip' in response.headers.get('Content-Encoding', ''):
# 使用BytesIO来处理二进制数据
compressed_data = BytesIO(response.content)
decompressed_data = gzip.open(compressed_data).read()
else:
decompressed_data = response.content
# 处理解压后的数据
print(decompressed_data)
deflate压缩:
deflate是一种较旧的压缩格式,可以使用zlib
模块来解压。
import requests
import zlib
from io import BytesIO
url = 'http://example.com/compressed-content'
response = requests.get(url)
# 检查响应头是否指示deflate压缩
if 'deflate' in response.headers.get('Content-Encoding', ''):
# 使用BytesIO来处理二进制数据
compressed_data = BytesIO(response.content)
decompressed_data = zlib.decompress(compressed_data.read())
else:
decompressed_data = response.content
# 处理解压后的数据
print(decompressed_data)
br压缩(Brotli):
brotli是一种较新的压缩格式,可以使用brotli
模块来解压。
import requests
import brotli
from io import BytesIO
url = 'http://example.com/compressed-content'
response = requests.get(url)
# 检查响应头是否指示br压缩
if 'br' in response.headers.get('Content-Encoding', ''):
# 使用BytesIO来处理二进制数据
compressed_data = BytesIO(response.content)
decompressed_data = brotli.decompress(compressed_data.read())
else:
decompressed_data = response.content
# 处理解压后的数据
print(decompressed_data)
在处理压缩内容时,首先检查响应头中的Content-Encoding
字段以确定是否使用了压缩格式。然后,根据具体的压缩格式使用相应的模块来解压数据。这样可以确保正确处理服务器返回的压缩内容。