Download di un’immagine tramite urllib e python

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

Quindi sto cercando di creare uno script Python che scarichi i webcomics e li metta in una cartella sul mio desktop. Ho trovato alcuni programmi simili qui che fanno qualcosa di simile, ma niente di simile a quello di cui ho bisogno. Quello che ho trovato più simile è proprio qui (http: //bytes.com/topic/python/answers/850927-problem-using-urllib-download-images). Ho provato a utilizzare questo codice:

>>> importa urllib >>> immagine = urllib.URLopener() >>> image.retrieve("http://www.gunnerkrigg.com//comics/00000001.jpg";"00000001.jpg") ("00000001.jpg", <httplib.HTTPMessage istanza a 0x1457a80>)  

Ho quindi cercato sul mio computer un file "00000001.jpg", ma tutto ciò che ho trovato è stata l'immagine memorizzata nella cache. Non sono nemmeno sicuro che abbia salvato il file sul mio computer. Una volta capito come scaricare il file, penso di sapere come gestire il resto. Essenzialmente basta usare un ciclo for e dividere la stringa in "00000000". "jpg" e incrementa "00000000" fino al numero più grande, che dovrei in qualche modo determinare. Qualche consiglio sul modo migliore per farlo o su come scaricare il file correttamente?

Grazie!

EDIT 15/06/10

Ecco lo script completo, salva i file in qualsiasi directory tu scelga. Per qualche strana ragione, i file non stavano scaricando e l'hanno fatto . Qualsiasi suggerimento su come pulirlo sarebbe molto apprezzato. Attualmente sto cercando di scoprire come esistono molti fumetti sul sito in modo da poter ottenere solo l'ultimo, invece di chiudere il programma dopo che un certo numero di eccezioni è stato sollevato.

 import urllib import os comicCounter=len(os.listdir("/file"))+1 # legge il numero di file nella cartella per avviare il download al prossimo fumetto errorCount=0 def download_comic(url,comicName): """ scarica un fumetto sotto forma di url = http://www.example.com comicName = "00000000.jpg" """ image=urllib.URLopener() image.retrieve(url,comicName) # scarica comicName all'URL mentre comicCounter <= 1000: # non è la soluzione più elegante os.chdir("/file") # imposta dove scaricare i file da provare: if comicCounter < 10: # necessario per suddividere in 10^n segmenti perché i nomi dei fumetti sono un insieme di zeri seguiti da un numero comicNumber=str("0000000"+str(comicCounter)) # stringa contenente il numero del fumetto a otto cifre comicName=str(comicNumber+.jpg") # stringa contenente il nome del file url=str("http:/ /www.gu nnerkrigg.com//comics/"+comicName) # crea l'URL per il fumetto comicCounter+=1 # incrementa il contatore di fumetti per passare al fumetto successivo, deve essere prima del download nel caso in cui il download sollevi un'eccezione download_comic(url,comicName ) # utilizza la funzione sopra definita per scaricare l'URL di stampa del fumetto if 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) stampa url se 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: # esci dal programma se viene visualizzato un numero al di fuori di questo intervallo esci eccetto IOError: # urllib solleva un IOError per un errore 404, quando il fumetto non esiste errorCount+=1 # aggiungi uno a il conteggio degli errori se errorCount>3: # se si verificano più di tre errori durante il download, esci dall'interruzione del programma else: print str("comic"+ " " + str(comicCounter) + " " + "non esiste") # altrimenti dire che il numero di un determinato fumetto non esiste stampa "tutti i fumetti sono aggiornati" # stampa se tutti i fumetti sono stati scaricati