Работает для меня, используя библиотеку запросов
import requests
url = 'http://www1.caixa.gov.br/loterias/_arquivos/loterias/D_megase.zip'
response = requests.get(url)
# Unzip it into a local directory if you want
import zipfile, io
zip = zipfile.ZipFile(io.BytesIO(response.content))
zip.extractall("/path/to/your/directory")
Обратите внимание, что иногда попытка программного доступа к веб-страницам приводит к 302 ответам, потому что они хотят, чтобы вы обращались к странице только через веб-браузер.Если вам нужно подделать это (не будьте оскорбительными), просто установите заголовок «User-Agent», чтобы он был похож на браузер.Вот пример того, как запрос выглядит так, как будто он поступает из браузера Chrome.
user_agent = 'Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1667.0 Safari/537.36'
headers = {'User-Agent': user_agent}
requests.get(url, headers=headers)
Существует несколько библиотек (например, https://pypi.org/project/fake-useragent/), чтобы помочь с этим для более масштабных проектов очистки.