Maison >développement back-end >Tutoriel Python >11 postures téléchargées en Python, toutes plus avancées les unes que les autres
Enfin, vous apprendrez à surmonter divers défis que vous pourriez rencontrer, tels que le téléchargement de fichiers redirigés, le téléchargement de fichiers volumineux, la réalisation d'un téléchargement multithread et d'autres stratégies.
Vous pouvez utiliser le module de requêtes pour télécharger des fichiers à partir d'une URL.
Considérez le code suivant :
Vous obtenez simplement l'URL en utilisant la méthode get du module de requêtes et stockez le résultat dans une variable appelée "monfichier". Ensuite, écrivez le contenu de cette variable dans le fichier.
Vous pouvez également utiliser le module wget de Python pour télécharger des fichiers à partir d'une URL. Vous pouvez installer le module wget à l'aide de pip en suivant la commande :
Considérez le code suivant, que nous utiliserons pour télécharger l'image du logo pour Python.
Dans ce code, l'URL et le chemin (où l'image sera stockée) sont transmis à la méthode de téléchargement du module wget.
Dans cette section, vous apprendrez à utiliser les requêtes pour télécharger un fichier à partir d'une URL qui sera redirigé vers une autre URL avec un fichier .pdf. L'URL ressemble à ceci :
Dans ce code, nous précisons l'URL dans la première étape. Ensuite, nous utilisons la méthode get du module request pour obtenir l'URL. Dans la méthode get, nous définissons allow_redirects sur True, ce qui autorisera les redirections dans l'URL et le contenu redirigé sera attribué à la variable myfile.
Enfin, nous ouvrons un fichier pour écrire le contenu obtenu.
Tout d'abord, nous utilisons la méthode get du module requêtes comme auparavant, mais cette fois, nous définirons l'attribut stream sur True.
Ensuite, nous créons un fichier nommé PythonBook.pdf dans le répertoire de travail actuel et l'ouvrons en écriture.
Ensuite, nous précisons la taille du morceau à télécharger à chaque fois. Nous l'avons défini sur 1024 octets, puis avons parcouru chaque morceau et écrit ces morceaux dans le fichier jusqu'à la fin du morceau.
N'est-ce pas beau ? Ne vous inquiétez pas, nous afficherons une barre de progression du processus de téléchargement plus tard.
Nous avons importé les modules OS et Time pour vérifier combien de temps il faut pour télécharger un fichier. Le module ThreadPool vous permet d'exécuter plusieurs threads ou processus à l'aide d'un pool.
Créons une fonction simple qui décompose la réponse à un fichier :
Tout comme nous l'avons fait dans la section précédente, nous transmettons cette URL à request.get. Enfin, nous ouvrons le fichier (le chemin spécifié dans l'URL) et écrivons le contenu de la page.
Maintenant, nous pouvons appeler cette fonction pour chaque URL individuellement, ou nous pouvons appeler cette fonction pour toutes les URL en même temps. Appelons cette fonction pour chaque URL individuellement dans une boucle for, en faisant attention au timer :
Exécutez le script.
La barre de progression est un composant de l'interface utilisateur du module clint. Entrez la commande suivante pour installer le module clint :
Dans ce code, nous avons d'abord importé le module de requêtes puis, nous avons importé le composant de progression depuis clint.textui. La seule différence réside dans la boucle for. Lors de l'écriture du contenu dans un fichier, nous utilisons la méthode bar du module de barre de progression.
Dans cette section, nous utiliserons urllib pour télécharger une page Web.
La bibliothèque urllib est la bibliothèque standard de Python, vous n'avez donc pas besoin de l'installer.
Spécifiez ici la raison pour laquelle vous souhaitez enregistrer le fichier et l'URL où vous souhaitez le stocker.
Dans ce code, nous utilisons la méthode urlretrieve et transmettons l'URL du fichier ainsi que le chemin pour enregistrer le fichier. L'extension du fichier sera .html.
Si vous devez utiliser un proxy pour télécharger vos fichiers, vous pouvez utiliser le ProxyHandler du module urllib. Veuillez regarder le code suivant :
Dans ce code, nous créons l'objet proxy et ouvrons le proxy en appelant la méthode build_opener d'urllib et en transmettant l'objet proxy. Ensuite, nous créons une demande pour obtenir la page.
De plus, vous pouvez également utiliser le module de requêtes comme décrit dans la documentation officielle :
Il vous suffit d'importer le module de requêtes et de créer votre objet proxy. Ensuite, vous pouvez récupérer le fichier.
urllib3 est une version améliorée du module urllib. Vous pouvez le télécharger et l'installer en utilisant pip :
Nous utiliserons urllib3 pour obtenir une page Web et la stocker dans un fichier texte.
Lors du traitement des fichiers, nous utilisons le module Shutil.
Ensuite, nous utilisons le PoolManager d'urllib3, qui assure le suivi du pool de connexions nécessaire.
Enfin, nous envoyons une requête GET pour obtenir l'URL et ouvrons un fichier, puis écrivons la réponse dans le fichier :
Pour télécharger des fichiers depuis Amazon S3, vous pouvez utiliser le module Python boto3.
Pour télécharger des fichiers depuis Amazon S3, vous devez importer boto3 et botocore. Boto3 est un SDK Amazon qui permet à Python d'accéder aux services Web Amazon (tels que S3). Botocore fournit un service de ligne de commande pour interagir avec les services Web Amazon.
Botocore est livré avec awscli. Pour installer boto3, exécutez la commande suivante :
Maintenant, nous initialisons une variable pour utiliser les ressources de la session. Pour ce faire, nous allons appeler la méthode resource() de boto3 et transmettre le service, qui est s3:
Enfin, utiliser la méthode download_file pour télécharger le fichier et transmettre la variable :
asyncio Principalement utilisé pour gérer les événements système. Il fonctionne autour d'une boucle d'événements qui attend qu'un événement se produise et réagit ensuite à cet événement. La réaction peut être d'appeler une autre fonction. Ce processus est appelé traitement des événements. Le module asyncio utilise des coroutines pour la gestion des événements.
Pour utiliser la gestion des événements asyncio et la fonctionnalité coroutine, nous allons importer le module asyncio :
Maintenant, définissons la méthode de coroutine asyncio comme ceci :
Le mot-clé async signifie qu'il s'agit d'une coroutine asyncio native. À l'intérieur de la coroutine, nous avons un mot-clé wait, qui renvoie une valeur spécifique. Nous pouvons également utiliser le mot-clé return.
Maintenant, créons un morceau de code pour télécharger un fichier à partir d'un site Web à l'aide de coroutine :
Dans ce morceau de code, nous avons créé une fonction coroutine asynchrone qui téléchargera notre fichier et renverra un message.
Ensuite, nous appelons main_func en utilisant une autre coroutine asynchrone qui attend les URL et regroupe toutes les URL dans une file d'attente. La fonction d'attente d'asyncio attendra la fin de la coroutine.
Maintenant, pour démarrer la coroutine, nous devons mettre la coroutine dans une boucle d'événement en utilisant la méthode get_event_loop() d'asyncio, et enfin, nous exécutons cette boucle d'événement en utilisant la méthode run_until_complete() d'asyncio.
Télécharger des fichiers à l'aide de Python est amusant. J'espère que ce tutoriel vous sera utile !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!