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
$ pip install requests
$ 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 ...
Voir Le Guide de l'utilisateur pour plus d'informations.
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')
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
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