Maison > développement back-end > Tutoriel Python > Comment télécharger efficacement des images à l'aide de la bibliothèque de requêtes de Python ?

Comment télécharger efficacement des images à l'aide de la bibliothèque de requêtes de Python ?

Linda Hamilton
Libérer: 2025-01-02 22:12:41
original
1010 Les gens l'ont consulté

How to Efficiently Download Images Using Python's Requests Library?

Télécharger des images avec des requêtes

Télécharger des images à partir du Web à l'aide du module de requêtes de Python peut être une tâche simple. Cependant, lors du passage de urllib2 aux requêtes, il est crucial de comprendre les différences dans les attributs utilisés pour récupérer les données de l'image.

Initialement, le code utilisant urllib2 lit l'image en utilisant img.read(), tandis que le code souhaité l'approche avec les requêtes a img = r.raw.read(). Ceci est erroné car r.raw est un objet fichier, et non les données d'image réelles.

Pour résoudre ce problème, il existe deux solutions viables :

  • Utiliser l'objet du fichier Response.raw :

    Définissez decode_content sur True pour forcer la décompression des réponses compressées. Cela vous permet de diffuser les données vers un objet fichier à l'aide de shutdown.copyfileobj().

    import requests
    import shutil
    
    r = requests.get(url, stream=True)
    if r.status_code == 200:
        with open(path, 'wb') as f:
            r.raw.decode_content = True
            shutil.copyfileobj(r.raw, f)        
    Copier après la connexion
  • Itération sur la réponse :

    Cette méthode garantit la décompression des données.

    r = requests.get(url, stream=True)
    if r.status_code == 200:
        with open(path, 'wb') as f:
            for chunk in r:
                f.write(chunk)
    Copier après la connexion

    Vous pouvez également spécifier une taille de bloc personnalisée en utilisant Response.iter_content().

    r = requests.get(url, stream=True)
    if r.status_code == 200:
        with open(path, 'wb') as f:
            for chunk in r.iter_content(1024):
                f.write(chunk)
    Copier après la connexion

N'oubliez pas d'ouvrir le fichier de destination en mode binaire (« wb ») pour empêcher la traduction des nouvelles lignes. De plus, définissez stream=True pour empêcher le téléchargement de l'image entière en mémoire.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal