在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
字段以確定是否使用了壓縮格式。然后,根據具體的壓縮格式使用相應的模塊來解壓數據。這樣可以確保正確處理服務器返回的壓縮內容。