La plupart des gens recommandent d'utiliser requests
s'il est disponible, et le requests
documentation recommande ceci pour télécharger et sauvegarder des données brutes à partir d'une 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)
Puisque la réponse demande de télécharger et l'épargne le fichier zip, je ne suis pas entré dans les détails concernant la lecture du fichier zip. Consultez l'une des nombreuses réponses ci-dessous pour connaître les possibilités.
Si pour une raison quelconque vous n'avez pas accès à requests
vous pouvez utiliser urllib.request
à la place. Il se peut qu'elle ne soit pas aussi robuste que la précédente.
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())
Enfin, si vous utilisez encore Python 2, vous pouvez utiliser 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())
1 votes
J'ai essayé la section Télécharger un fichier binaire et l'écrire sur le disque de cette page qui a fonctionné comme un chram.