Насколько я могу судить, правильный способ сделать это:
import requests, zipfile, StringIO
r = requests.get(zip_file_url, stream=True)
z = zipfile.ZipFile(StringIO.StringIO(r.content))
z.extractall()
конечно, вы хотите проверить, что GET был успешным с r.ok
.
Для python 3+, замените модуль StringIO модулем io и используйте BytesIO вместо StringIO: Здесь - примечания к выпуску, в которых упоминается это изменение.
import requests, zipfile, io
r = requests.get(zip_file_url)
z = zipfile.ZipFile(io.BytesIO(r.content))
z.extractall()