Bonjour le monde
Telecharger des fichiers avec Python est simple et facile, nous allons voir comment procéder.
Introduction
Pour accomplir notre tache qui est celle de télécharger des fichiers en utilisant Python, nous allons utiliser le module requests
Requests est le module par excellence Python pour travailler avec le protocole HTTP. Et c'est aussi le module Python le plus celebre (nombre d'installation). Requests vous propose une abstraction, qui vous aide à être concis, précis et rapide dans votre travail "http" que vous voulez accomplir. En effet, utiliser les modules offerts par la librairie standard Python comme par exemple "http.client" requiert non seulement une bonne capacité à lire la doc Python mais aussi de bonnes bases en protocole HTTP. Requests est là pour nous simplifier la tâche.
Installation et utilisation
Pour installer requests, rien de plus simple que:
pip install requests
Il se pourrait que votre systeme soit venu avec déjà requests donc je
vous conseille de faire une mise à jour (l'api publique de requests
change rarement donc c'est sain de le faire), comme ceci:
pip install --upgrade requests
Si nous voulons recuperer la page d'accueil de ce site, on doit faire:
import requests
req = requests.get("https://zouktil.com")
print(req.content)
Explication:
import requests : nous permet d'importer le module requests
req = requests.get("https://zoutil.com") : on fait une requete de type GET et on sauvegarde le résultat dans la variable req
print(req.content) : on affiche le content de la reponse. Ici ce sera le code source de la page qui va s'afficher.
Telechargement d'un fichier
Pour telecharger, un fichier on fait une requete (en general GET) et on sauvegarde le contenu dans un fichier qu'on a ouvert au prealable. Telechargeons la page d'accueil de ce site, par exemple:
import requests
req = requests.get('https://zouktil.com')
with open('zouktil.html', 'w') as fp:
fp.write(req.content)
La page sera telechargée et enregistrée dans le dossier courant.
Maintenant ce que vous devez savoir c'est que si vous télécharger
vraiment un fichier, il y'a de forte chance qu'il soit lourd et en
realité lorsque vous faites, req.content
tout le fichier est téléchargé et mis en mémoire (RAM) avant d'etre
sauvegardé sur le disque. Ceci peut provoquer des crashs voir des déni
de services.
Pour eviter celà, il faut utiliser un itérateur et comme par magie requests nous en propose un.
import requests
req = requests.get('https://server-idiot.existepas/fichier-lourd.mp4',
stream=True)
with open("video.mp4", "wb") as fp:
for partie in req.iter_content:
fp.write(partie)
On passe le paramètre stream=True
à la fonction request.get
pour informer request que nous nous appretons à recuperer un flux, c'est à dire que le contenu va venir progressivement.
Puis on utilise l'iterateur .iter_content
de req
pour recuperer chaque partie du fichier et le sauvegarder. Exactement comme un telechargement dans le navigateur.
Avec ceci, aucun risque de surcharger sa RAM.
Bon voilà, on arrive à la fin de notre article, j'espère qu'il vous a plu. Si c'est le cas, laissez un Like et en cas de problème, de remarque ou d'amélioration laissez un commentaire.