从URL下载返回的Zip文件


问题内容

如果我有一个URL,当在Web浏览器中提交该URL时,会弹出一个对话框来保存一个zip文件,我将如何在Python中捕获并下载该zip文件?


问题答案:

大多数人建议使用requests它,如果有的话,requests
文档建议这样做以从URL下载和保存原始数据:

import requests

def download_url(url, save_path, chunk_size=128):
    r = requests.get(url, stream=True)
    with open(save_path, 'wb') as fd:
        for chunk in r.iter_content(chunk_size=chunk_size):
            fd.write(chunk)

由于答案询问有关下载 和保存 zip文件的问题,因此我没有介绍有关阅读zip文件的详细信息。有关可能性,请参见下面的众多答案之一。

如果由于某种原因您无权访问requests,则可以urllib.request改用。它可能没有上述功能那么强大。

import urllib.request

def download_url(url, save_path):
    with urllib.request.urlopen(url) as dl_file:
        with open(save_path, 'wb') as out_file:
            out_file.write(dl_file.read())

最后,如果您仍在使用Python 2,则可以使用urllib2.urlopen

from contextlib import closing

def download_url(url, save_path):
    with closing(urllib2.urlopen(url)) as dl_file:
        with open(save_path, 'wb') as out_file:
            out_file.write(dl_file.read())