Een afbeelding downloaden via urllib en python

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

Dus ik probeer een Python-script te maken dat webcomics downloadt en in een map op mijn bureaublad plaatst. Ik heb hier een paar vergelijkbare programma's gevonden die iets soortgelijks doen, maar niets lijkt op wat ik nodig heb. Degene die ik het meest op elkaar vond, is hier (http: //bytes.com/topic/python/answers/850927-problem-using-urllib-download-images). Ik heb geprobeerd deze code te gebruiken:

>>> import urllib >>> afbeelding = urllib.URLopener() >>> image.retrieve("http://www.gunnerkrigg.com//comics/00000001.jpg";"00000001.jpg") ("00000001.jpg", <httplib.HTTPMessage-instantie op 0x1457a80>)  

Vervolgens zocht ik op mijn computer naar een bestand "00000001.jpg", maar ik vond alleen de afbeelding in de cache ervan. Ik weet niet eens zeker of het bestand op mijn computer is opgeslagen. Als ik eenmaal begrijp hoe ik het bestand moet downloaden, denk ik dat ik weet hoe ik de rest moet afhandelen. Gebruik in wezen gewoon een for-lus en splits de string op de "00000000". "jpg" en verhoog de "00000000" tot het grootste getal, dat ik op de een of andere manier zou moeten bepalen. Eventuele aanbevelingen over de beste manier om dit te doen of hoe het bestand correct te downloaden?

Bedankt!

EDIT 15/6/10

Hier is het voltooide script, het slaat de bestanden op in elke gewenste map. Om de een of andere vreemde reden werden de bestanden niet gedownload en deden ze dat gewoon . Om het even welke suggesties op hoe te om het schoon te maken zouden veel gewaardeerd worden. Ik ben momenteel aan het uitzoeken hoe ik erachter kan komen dat er veel strips op de site staan, zodat ik alleen de laatste kan krijgen, in plaats van dat het programma stopt nadat er een aantal uitzonderingen zijn gemaakt.

 import urllib import os comicCounter=len(os.listdir("/file"))+1 # leest het aantal bestanden in de map om te beginnen met downloaden bij de volgende strip errorCount=0 def download_comic(url,comicName): """ download een strip in de vorm van url = http://www.example.com comicName = "00000000.jpg" """ image=urllib.URLopener() image.retrieve(url,comicName) # download comicName op URL terwijl comicCounter <= 1000: # niet de meest elegante oplossing os.chdir("/file") # stel in waar bestanden moeten worden gedownload om te proberen: als comicCounter < 10: # nodig is om in 10^n segmenten te breken omdat stripnamen een set zijn van nullen gevolgd door een getal comicNumber=str("0000000"+str(comicCounter)) # tekenreeks met het achtcijferige stripnummer comicName=str(comicNumber+".jpg") # tekenreeks met de bestandsnaam url=str("http:// /www.gu nnerkrigg.com//comics/"+comicName) # maakt de URL voor de strip comicCounter+=1 # verhoogt de stripteller om naar de volgende strip te gaan, moet vóór de download zijn voor het geval de download een uitzondering oplevert download_comic(url,comicName ) # gebruikt de functie die hierboven is gedefinieerd om de stripafdruk-URL te downloaden als 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) print url als 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: # sluit het programma af als een getal buiten dit bereik verschijnt stop met uitzondering van IOError: # urllib roept een IOError op voor een 404-fout, als de strip niet bestaat errorCount+=1 # voeg er een toe aan het aantal fouten als errorCount>3: # als er meer dan drie fouten optreden tijdens het downloaden, stop dan de programma-onderbreking else: print str("comic"+ " " + str(comicCounter) + " " + "bestaat niet") # anders zeg dat het bepaalde stripnummer niet bestaat print "alle strips zijn up-to-date" # print als alle strips zijn gedownload