[PYTHON] Télécharger des images à l'aide de demandes

C'est juste une note personnelle. Créez un programme Python qui télécharge rapidement des images à l'aide d'une bibliothèque appelée requêtes. ʻUrllib.requests` semble être utile dans python3, mais il semble qu'il ne puisse pas être utilisé dans python2 (recherche insuffisante), donc j'ai utilisé ceci. Vous pouvez définir divers paramètres tels que les cookies, mais créez un programme simple auquel vous pouvez accéder et télécharger.

Officiel: requêtes python

Installation

$ pip install requests

Essayez de l'utiliser comme un essai

$ python
>>> import requests
>>> url = "http://docs.python-requests.org/en/master/#"
>>> res = requests(url)
>>> res = requests.get(url)
>>> res.status_code
200
>>> res.headers["content-type"]
'text/html'
>>> res.content
'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"\n  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\n\n\n<html xmlns="http://www.w3.org/1999/xhtml">\n  <head>\n...
>>> res.text  
u'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"\n  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\n\n\n<html xmlns="http://www.w3.org/1999/xhtml">\n  <head>\n ...

Comment utiliser (extrait)

Voir Le Guide de l'utilisateur pour plus d'informations.

1. Comment envoyer une demande

Lorsque le paramètre URL est défini, il est donné au format dictionnaire aux paramètres d'argument.

res = requests.get('http://httpbin.org/get', params={'key':'value'})

print(res.url)  #=> http://httpbin.org/get?key=value

Dans post and put, les informations du formulaire peuvent être envoyées avec les données d'argument.

res = requests.post('http://httpbin.org/post', data = {'key':'value'})
res = requests.put('http://httpbin.org/put', data = {'key':'value'})

Les méthodes sont fournies en fonction du type de demande.

res = requests.get('http://httpbin.org/get')
res = requests.post('http://httpbin.org/post', data = {'key':'value'})
res = requests.put('http://httpbin.org/put', data = {'key':'value'})
res = requests.delete('http://httpbin.org/delete')
res = requests.head('http://httpbin.org/get')
res = requests.options('http://httpbin.org/get')

2. Traitement des réponses

Vous pouvez vous référer aux variables suivantes.

res = requests.get('http://httpbin.org/get')

# HTML Status Code
response.status_code

#Contenu dans l'en-tête de la réponse-Examiner le type
print res.header["content-type"] 

#Données acquises(binaire)
print res.content

#Données acquises(Encodé)Et encodage
print res.text
print res.encoding

Téléchargeons en fait l'image

L'entrée est un fichier texte ʻinput.txtavec une liste d'URL, et les images sont sorties vers le répertoire de sortie ʻimages /dans l'ordre de 0.jpg, 1.jpg, 2.jpg, .... Dans certains endroits, du code étrange est mélangé parce que c'est mignon.

import requests
import os
import sys

#Télécharger l'image
def download_image(url, timeout = 10):
    response = requests.get(url, allow_redirects=False, timeout=timeout)
    if response.status_code != 200:
        e = Exception("HTTP status: " + response.status_code)
        raise e

    content_type = response.headers["content-type"]
    if 'image' not in content_type:
        e = Exception("Content-Type: " + content_type)
        raise e

    return response.content

#Décidez du nom de fichier de l'image
def make_filename(base_dir, number, url):
    ext = os.path.splitext(url)[1] #Obtenir l'extension
    filename = number + ext        #Ajoutez une extension au numéro pour en faire un nom de fichier

    fullpath = os.path.join(base_dir, filename)
    return fullpath

#Enregistrer l'image
def save_image(filename, image):
    with open(filename, "wb") as fout:
        fout.write(image)

#Principale
if __name__ == "__main__":
    urls_txt = "input.txt"
    images_dir = "images"
    idx = 0

    with open(urls_txt, "r") as fin:
        for line in fin:
            url = line.strip()
            filename = make_filename(images_dir, idx, url)

            print "%s" % (url)
            try:
                image = download_image(url)
                save_image(filename, image)
                idx += 1
            except KeyboardInterrupt:
                break
            except Exception as err:
                print "%s" % (err)

Recommended Posts

Télécharger des images à l'aide de demandes
Enregistrer des images à l'aide de requêtes python3
Télécharger des images de «Irasutoya» à l'aide de Scrapy
Collectez des images à l'aide d'icrawler
Télécharger automatiquement des images avec grattage
Catégoriser les images de chats à l'aide de ChainerCV
Télécharger Excel en utilisant Spring MVC
Prédiction géolocalisée à partir d'images à l'aide de DNN
Envoyer des messages et des images à l'aide de LineNotify
Impossible de télécharger des images avec Google_images_download
Générer des images de texte multilingues à l'aide de Python
Authentification OAuth à l'aide de requêtes Exemple: Flickr
ResourceWarning lors de l'utilisation de requêtes: solution de contournement non fermée
Télécharger et télécharger des images avec Falcon
demandes
Utilisez boto pour télécharger le fichier depuis S3.
Connectez-vous à Slack à l'aide de requêtes en Python
Télécharger des images à partir de la liste d'URL en Python
Comment télécharger des vidéos YouTube à l'aide de pytube3
Téléchargez des fichiers dans n'importe quel format en utilisant Python