Загрузить ZIP-файл из Интернета (Python) - PullRequest
0 голосов
/ 14 мая 2018

Я пытаюсь загрузить ZIP-файл с этого сайта .Я смотрел на другие вопросы, подобные этому , пытался использовать requests и urllib, но я получаю ту же ошибку:

urllib.error.HTTPError: HTTP Error 302: The HTTP server returned a redirect error that would lead to an infinite loop. The last 30x error message was: Found

Любые идеи о том, как открытьфайл прямо из Интернета?

Вот пример кода

from urllib.request import urlopen
response = urlopen('http://www1.caixa.gov.br/loterias/_arquivos/loterias/D_megase.zip')

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

Работает для меня, используя библиотеку запросов

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/), чтобы помочь с этим для более масштабных проектов очистки.

0 голосов
/ 14 мая 2018

Связанный URL будет перенаправлен на неопределенный срок, поэтому вы получаете ошибку 302.

Вы можете проверить это сами здесь . Как видите, связанный URL-адрес немедленно перенаправляет на себя, создавая цикл с одним URL-адресом.

...