Загрузка zip-файлов по всплывающей веб-ссылке - PullRequest
0 голосов
/ 11 января 2019

У меня есть ссылка, которая при вводе в веб-браузер вызывает всплывающий вопрос о том, открывать или сохранять файл. Я попробовал несколько решений, но ничего не получилось, как ожидалось.

Я попытался реализовать решения из этого поста здесь: Скачать возвращенный Zip-файл с URL . Но без каких-либо результатов. Мне удалось создать zip-файл, но у меня возникли проблемы с переходом от URL-адреса к записи в zip-файл.

import requests, zipfile

path = "A:/"

url = "http://"+"www.sec.gov/dera/data/Public-EDGAR-log-file-data/2003 /Qtr4/log20031231.zip"
target_path = path + 'log20031231.zip'


results = requests.get(url)
zip = zipfile.ZipFile(path + 'log20031231_2.zip', "w")
insert = zipfile.ZipFile(results.content)
zip.write(results, compress_type=zipfile.ZIP_DEFLATED)
zip.close()

Код создает zip, но ничего не записывается в zip файл. Вывод в консоли следующий:

Traceback (most recent call last):
  File "A:/python project/testing/testing 3.py", line 17, in <module>
    insert = zipfile.ZipFile(results.content)
  File "C:\Users\Adrian\AppData\Local\Programs\Python\Python37\lib\zipfile.py", line 1222, in __init__
    self._RealGetContents()
  File "C:\Users\Adrian\AppData\Local\Programs\Python\Python37\lib\zipfile.py", line 1285, in _RealGetContents
    endrec = _EndRecData(fp)
  File "C:\Users\Adrian\AppData\Local\Programs\Python\Python37\lib\zipfile.py", line 259, in _EndRecData
    fpin.seek(0, 2)
AttributeError: 'bytes' object has no attribute 'seek'

1 Ответ

0 голосов
/ 14 января 2019

Я нашел решение проблемы. Для этого даже не нужен модуль zip-файла. Он загружает содержимое, а затем помещает их в архив.

import requests

url = "http://"+"www.sec.gov/dera/data/Public-EDGAR-log-file-data/2003/Qtr4/log20031231.zip"
open_url = requests.get(url)

with open('log20031231_2.zip', "wb") as code:
    code.write(open_url.content)
...