Herunterladen eines Bildes über urllib und Python

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

Also versuche ich, ein Python-Skript zu erstellen, das Webcomics herunterlädt und sie in einem Ordner auf meinem Desktop ablegt. Ich habe hier ein paar ähnliche Programme gefunden, die etwas Ähnliches tun, aber nichts entspricht dem, was ich brauche. Diejenige, die ich am ähnlichsten fand, ist genau hier (http: //bytes.com/topic/python/answers/850927-problem-using-urllib-download-images). Ich habe versucht, diesen Code zu verwenden:

>>> URL-Bibliothek importieren >>> image = urllib.URLopener() >>> image.retrieve("http://www.gunnerkrigg.com//comics/00000001.jpg";"00000001.jpg") ("00000001.jpg", <httplib.HTTPMessage-Instanz bei 0x1457a80>)  

Ich habe dann meinen Computer nach einer Datei "00000001.jpg" durchsucht, aber alles, was ich gefunden habe, war das zwischengespeicherte Bild davon. Ich bin mir nicht einmal sicher, ob die Datei auf meinem Computer gespeichert wurde. Sobald ich verstehe, wie die Datei heruntergeladen wird, weiß ich, wie ich mit dem Rest umgehe. Verwenden Sie im Wesentlichen einfach eine for-Schleife und teilen Sie die Zeichenfolge bei "00000000". "jpg" und erhöhe "00000000" bis zur größten Zahl, die ich irgendwie ermitteln müsste. Irgendwelche Empfehlungen, wie man das am besten macht oder wie man die Datei richtig herunterlädt?

Danke!

BEARBEITEN 15.6.10

Hier ist das fertige Skript, es speichert die Dateien in einem beliebigen Verzeichnis Ihrer Wahl. Aus irgendeinem seltsamen Grund wurden die Dateien nicht heruntergeladen und sie haben es einfach getan . Irgendwelche Vorschläge, wie man es säubert, würden sehr geschätzt. Ich arbeite gerade daran, herauszufinden, wie viele Comics auf der Website existieren, damit ich nur den neuesten bekomme, anstatt das Programm nach einer bestimmten Anzahl von Ausnahmen beenden zu müssen.

 import urllib import os comicCounter=len(os.listdir("/file"))+1 # liest die Anzahl der Dateien im Ordner, die beim nächsten Comic heruntergeladen werden sollen errorCount=0 def download_comic(url,comicName): """ einen Comic herunterladen in Form von url = http://www.example.com comicName = "00000000.jpg" """ image=urllib.URLopener() image.retrieve(url,comicName) # download comicName at URL while comicCounter <= 1000: # nicht die eleganteste Lösung os.chdir("/file") # Festlegen, wo Dateien heruntergeladen werden sollen: if comicCounter < 10: # musste in 10^n Segmente aufgeteilt werden, da Comic-Namen eine Menge von sind Nullen gefolgt von einer Zahl comicNumber=str("0000000"+str(comicCounter)) # String mit der achtstelligen Comic-Nummer comicName=str(comicNumber+".jpg") # String mit dem Dateinamen url=str("http:/ /www.gu nnerkrigg.com//comics/"+comicName) # erstellt die URL für den Comic comicCounter+=1 # erhöht den Comiczähler um zum nächsten Comic zu gehen, muss vor dem Download erfolgen, falls der Download eine Ausnahme auslöst download_comic(url,comicName ) # verwendet die oben definierte Funktion, um die Comicdruck-URL herunterzuladen, wenn 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) URL drucken, wenn 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: # beende das Programm, wenn eine Zahl außerhalb dieses Bereichs auftaucht beende außer IOError: # urllib löst einen IOError für einen 404-Fehler aus, wenn der Comic nicht existiert errorCount+=1 # add one to der Fehlerzähler if errorCount>3: # wenn mehr als drei Fehler beim Download auftreten, Programm beenden break else: print str("comic"+ " " + str(comicCounter) + " " + "existiert nicht") # sonst sagen, dass die bestimmte Comic-Nummer nicht existiert print "alle Comics sind aktuell" # druckt, wenn alle Comics heruntergeladen sind