urllib ve python aracılığıyla bir resim indirme

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

Bu yüzden, web çizgi romanlarını indiren ve bunları masaüstümdeki bir klasöre koyan bir Python betiği yapmaya çalışıyorum. Burada benzer bir şey yapan birkaç benzer program buldum, ancak ihtiyacım olan şeye tam olarak benzemiyor. En benzer bulduğum tam burada (http: //bytes.com/topic/python/answers/850927-problem-using-urllib-download-images). Bu kodu kullanmayı denedim:

>>> urllib'i içe aktar >>> resim = urllib.URLopener() >>> image.retrieve("http://www.gunnerkrigg.com//comics/00000001.jpg";"00000001.jpg") ("00000001.jpg", <httplib.HTTPMessage örneği 0x1457a80>)  

Daha sonra bilgisayarımda "00000001.jpg" dosyasını aradım, ancak tüm bulabildiğim önbelleğe alınmış resmiydi. Dosyayı bilgisayarıma kaydettiğinden bile emin değilim. Dosyayı nasıl indireceğimi anladıktan sonra, gerisini nasıl halledeceğimi bildiğimi düşünüyorum. Esasen sadece bir for döngüsü kullanın ve dizeyi "00000000" ile bölün. "jpg" ve "00000000" değerini bir şekilde belirlemem gereken en büyük sayıya kadar artırın. Bunu yapmanın en iyi yolu veya dosyayı doğru şekilde nasıl indireceğiniz konusunda herhangi bir öneriniz var mı?

Teşekkürler!

DÜZENLE 6/15/10

İşte tamamlanmış komut dosyası, dosyaları seçtiğiniz herhangi bir dizine kaydeder. Garip bir nedenden dolayı dosyalar indirilmiyordu ve az önce indirdiler . Nasıl temizleneceğine dair herhangi bir öneri çok takdir edilecektir. Şu anda sitede birçok çizgi romanın var olduğunu nasıl öğreneceğimi bulmaya çalışıyorum, böylece belirli sayıda istisna ortaya çıktıktan sonra programın kapanmasını sağlamak yerine sadece en yenisini alabiliyorum.

 import urllib import os comicCounter=len(os.listdir("/file"))+1 # bir sonraki çizgi romanda indirmeye başlamak için klasördeki dosya sayısını okur errorCount=0 def download_comic(url,comicName): """ url şeklinde bir çizgi roman indirin = http://www.example.com comicName = "00000000.jpg" """ image=urllib.URLopener() image.retrieve(url,comicName) # comicCounter iken COMICName'i URL'den indirin <= 1000: # en zarif çözüm değil os.chdir("/file") # dosyaların denenmek için indirildiği yer kümesi: if comicCounter < 10: # çizgi roman adları bir dizi olduğundan 10^n parçaya bölünmesi gerekiyordu sıfırlar ve ardından bir sayı comicNumber=str("0000000"+str(comicCounter)) # sekiz basamaklı çizgi roman numarasını içeren dize comicName=str(comicNumber+".jpg") # dosya adını içeren dize url=str("http:/ /www.gu nnerkrigg.com//comics/"+comicName) # komik çizgi romanın URL'sini oluştururCounter+=1 # bir sonraki çizgi romana gitmek için çizgi roman sayacını artırır, indirme işleminin bir istisna oluşturması durumunda indirmeden önce olmalıdır download_comic(url,comicName) ) #, 10 <= comicCounter < ise çizgi roman yazdırma url'sini indirmek için yukarıda tanımlanan işlevi kullanır. 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'yi 100 ise yazdır <= comicCounter < 1000: 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 else: # bu aralığın dışında herhangi bir sayı belirirse programdan çık IOError dışında çık: # urllib, çizgi roman olmadığında bir 404 hatası için bir IOError verir errorCount+=1 # bir tane ekle errorCount>3 ise hata sayısı: # indirme sırasında üçten fazla hata oluşursa, programdan çıkın aksi halde: print str("comic"+ " " + str(comicCounter) + " " + "yoksa") # aksi halde belirli bir çizgi roman numarasının olmadığını söyleyin "tüm çizgi romanlar güncel" yazdırın # tüm çizgi romanlar indirilirse yazdırır