Télécharger Retourné fichier Zip à partir de l'URL
Si j'ai une URL qui, lorsqu'il est soumis à un navigateur web, affiche une boîte de dialogue pour enregistrer un fichier zip, comment pourrais-je aller sur la capture et le téléchargement de ce fichier zip en Python?
- J'ai essayé la section le Téléchargement d'un fichier binaire et l'écriture sur le disque de cette page qui a travaillé comme un chram.
Vous devez vous connecter pour publier un commentaire.
Utilisation
urllib2.urlopen
. La valeur de retour est un fichier comme un objet que vous pouvezread()
, passer àzipfile
et ainsi de suite.Aussi loin que je peux dire, la bonne façon de le faire est:
bien sûr, vous voulez vérifier que le GET a été un succès avec
r.ok
.Pour python 3+, sous la StringIO module avec la io module et l'utilisation BytesIO au lieu de StringIO: Ici sont des notes de version que la mention de ce changement.
z.extractall()
avecz.extractall("/path/to/destination_directory")
zip_file_url
.extractall()
il extrait le contenu. Je n'en veux pas.urllib.request.urlretrieve(url, filename)
.pd.read_table(z.open('filename'))
ci-dessus. Utile si vous avez un zip lien url qui contient plusieurs fichiers et que vous n'êtes intéressé que par un chargement.Voici ce que j'ai eu à travailler en Python 3:
urllib.error.HTTPError: HTTP Error 302: The HTTP server returned a redirect error that would lead to an infinite loop.
?Avec l'aide de ce blog, j'ai eu de travailler avec
requests
. Le point de l'étrangestream
chose est si nous n'avons pas besoin d'appelercontent
sur les requêtes de grande taille, ce qui l'obligerait à tous d'être traitées à la fois, obstruction de la mémoire. Lestream
permet d'éviter cela en parcourant les données d'un morceau à la fois.Utiliser urllib2.urlopen, ou vous pouvez essayer d'utiliser l'excellent
Demande
module et éviter urllib2 maux de tête:zipfile
module:zip = zipfile.ZipFile(results.content)
. Puis juste analyser les fichiers à l'aide deZipFile.namelist()
,ZipFile.open()
, ouZipFile.extractall()
Grâce à @yoavram pour la solution ci-dessus,
mon chemin d'accès d'url liée à une zippée dossier, et rencontre une erreur de BADZipfile
(fichier n'est pas un fichier zip), et il est étrange si j'ai essayé plusieurs fois il
récupérer l'url et décompressé tout d'un coup donc j'ai modifier la solution un peu
bit. à l'aide de la is_zipfile méthode comme par ici
Je suis venu ici chercher comment sauver un .bzip2 fichier. Permettez-moi de coller le code pour les autres qui viennent à la recherche de ce.
Je voulais juste enregistrer le fichier.