从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())