Télécharger une image via urllib et python

| | | | | | | | | | | | | | | | | | |

J'essaie donc de créer un script Python qui télécharge des webcomics et les place dans un dossier sur mon bureau. J'ai trouvé ici quelques programmes similaires qui font quelque chose de similaire, mais rien de tout à fait comme ce dont j'ai besoin. Celui que j'ai trouvé le plus similaire est ici (http: //bytes.com/topic/python/answers/850927-problem-using-urllib-download-images). J'ai essayé d'utiliser ce code :

>>> importer urllib >>> image = urllib.URLopener() >>> image.retrieve("http://www.gunnerkrigg.com//comics/00000001.jpg";"00000001.jpg") ("00000001.jpg", <instance httplib.HTTPMessage à 0x1457a80>)  

J'ai ensuite cherché sur mon ordinateur un fichier "00000001.jpg", mais tout ce que j'ai trouvé était l'image en cache de celui-ci. Je ne suis même pas sûr qu'il ait enregistré le fichier sur mon ordinateur. Une fois que j'ai compris comment télécharger le fichier, je pense que je sais comment gérer le reste. Essentiellement, utilisez simplement une boucle for et divisez la chaîne en "00000000". "jpg" et incrémentez le "00000000" jusqu'au plus grand nombre, que je devrais déterminer d'une manière ou d'une autre. Des recommandations sur la meilleure façon de procéder ou comment télécharger le fichier correctement ?

Merci !

EDIT 15/06/10

Voici le script terminé, il enregistre les fichiers dans n'importe quel répertoire de votre choix. Pour une raison étrange, les fichiers n'ont pas été téléchargés et ils l'ont fait . Toutes les suggestions sur la façon de le nettoyer seraient très appréciées. Je travaille actuellement sur la façon de découvrir que de nombreuses bandes dessinées existent sur le site afin que je puisse obtenir uniquement la dernière, plutôt que de laisser le programme se fermer après qu'un certain nombre d'exceptions aient été soulevées.

 import urllib import os comicCounter=len(os.listdir("/file"))+1 # lit le nombre de fichiers dans le dossier pour commencer le téléchargement à la prochaine bande dessinée errorCount=0 def download_comic(url,comicName): """ télécharger une bande dessinée sous la forme url = http://www.example.com comicName = "00000000.jpg" """ image=urllib.URLopener() image.retrieve(url,comicName) # download comicName at URL while comicCounter <= 1000 : # pas la solution la plus élégante os.chdir("/file") # définir où les fichiers sont téléchargés pour essayer : if comicCounter < 10 : # nécessaire de diviser en 10^n segments car les noms de bandes dessinées sont un ensemble de des zéros suivis d'un nombre comicNumber=str("0000000"+str(comicCounter)) # chaîne contenant le numéro de bande dessinée à huit chiffres comicName=str(comicNumber+".jpg") # chaîne contenant le nom du fichier url=str("http:/ /www.gu nnerkrigg.com//comics/"+comicName) # crée l'URL de la bande dessinée comicCounter+=1 # incrémente le compteur de bandes dessinées pour passer à la bande dessinée suivante, doit être avant le téléchargement au cas où le téléchargement déclencherait une exception download_comic(url,comicName ) # utilise la fonction définie ci-dessus pour télécharger l'URL d'impression de la bande dessinée si 10 <= comicCounter < 100 : comicNumber=str("000000"+str(comicCounter)) comicName=str(comicNumber+".jpg") url=str("http://www.gunnerkrigg.com//comics/"+comicName) comicCounter+=1 download_comic(url,comicName) imprimer l'url si 100 <= comicCounter < 1000 : comicNumber=str("00000"+str(comicCounter)) comicName=str(comicNumber+".jpg") url=str("http://www.gunnerkrigg.com//comics/"+comicName) comicCounter+=1 download_comic(url,comicName) print url else : # quittez le programme si un nombre en dehors de cette plage apparaît, quittez sauf IOError : # urllib génère une IOError pour une erreur 404, lorsque la bande dessinée n'existe pas errorCount+=1 # ajoutez un à le nombre d'erreurs if errorCount>3 : # si plus de trois erreurs se produisent lors du téléchargement, quittez le programme break else : print str("comic"+ " " + str(comicCounter) + " " + "n'existe pas") # sinon dire que le certain numéro de bande dessinée n'existe pas imprimer "toutes les bandes dessinées sont à jour" # affiche si toutes les bandes dessinées sont téléchargées