ดังนั้นฉันจึงพยายามสร้างสคริปต์ Python ที่ดาวน์โหลดคอมมิคส์และวางไว้ในโฟลเดอร์บนเดสก์ท็อปของฉัน ฉันพบโปรแกรมที่คล้ายกันสองสามรายการที่นี่ซึ่งทำสิ่งที่คล้ายกัน แต่ไม่มีอะไรที่เหมือนกับสิ่งที่ฉันต้องการ สิ่งที่ฉันคิดว่าคล้ายกันมากที่สุดอยู่ที่นี่ ( http://bytes.com/topic/python/answers/850927-problem-using-urllib-download-images ) ฉันพยายามใช้รหัสนี้:
>>> import urllib
>>> image = urllib.URLopener()
>>> image.retrieve("http://www.gunnerkrigg.com//comics/00000001.jpg","00000001.jpg")
('00000001.jpg', <httplib.HTTPMessage instance at 0x1457a80>)
จากนั้นฉันค้นหาคอมพิวเตอร์ของฉันเพื่อหาไฟล์ "00000001.jpg" แต่สิ่งที่ฉันพบคือรูปภาพแคชของมัน ฉันไม่แน่ใจด้วยซ้ำว่าบันทึกไฟล์ไว้ในคอมพิวเตอร์ของฉัน เมื่อฉันเข้าใจวิธีดาวน์โหลดไฟล์ฉันคิดว่าฉันรู้วิธีจัดการกับส่วนที่เหลือ เป็นหลักเพียงใช้สำหรับวนรอบและแยกสตริงที่ '00000000'. 'jpg' และเพิ่ม '00000000' เป็นจำนวนมากที่สุดซึ่งฉันจะต้องพิจารณาอย่างใด คำแนะนำใด ๆ เกี่ยวกับวิธีที่ดีที่สุดในการทำเช่นนี้หรือวิธีการดาวน์โหลดไฟล์อย่างถูกต้อง?
ขอบคุณ!
แก้ไข 6/15/10
นี่คือสคริปต์ที่เสร็จสมบูรณ์แล้วมันจะบันทึกไฟล์ไปยังไดเรกทอรีใด ๆ ที่คุณเลือก ด้วยเหตุผลแปลก ๆ บางอย่างไฟล์ไม่ได้ถูกดาวน์โหลดและพวกมันเพิ่งทำ คำแนะนำใด ๆ เกี่ยวกับวิธีการทำความสะอาดจะได้รับการชื่นชมมาก ขณะนี้ฉันกำลังหาวิธีที่จะทราบว่ามีหนังสือการ์ตูนมากมายอยู่ในเว็บไซต์เพื่อที่ฉันจะได้รับหนังสือการ์ตูนเล่มล่าสุดแทนที่จะให้โปรแกรมออกหลังจากมีข้อยกเว้นจำนวนหนึ่งเกิดขึ้น
import urllib
import os
comicCounter=len(os.listdir('/file'))+1 # reads the number of files in the folder to start downloading at the next comic
errorCount=0
def download_comic(url,comicName):
"""
download a comic in the form of
url = http://www.example.com
comicName = '00000000.jpg'
"""
image=urllib.URLopener()
image.retrieve(url,comicName) # download comicName at URL
while comicCounter <= 1000: # not the most elegant solution
os.chdir('/file') # set where files download to
try:
if comicCounter < 10: # needed to break into 10^n segments because comic names are a set of zeros followed by a number
comicNumber=str('0000000'+str(comicCounter)) # string containing the eight digit comic number
comicName=str(comicNumber+".jpg") # string containing the file name
url=str("http://www.gunnerkrigg.com//comics/"+comicName) # creates the URL for the comic
comicCounter+=1 # increments the comic counter to go to the next comic, must be before the download in case the download raises an exception
download_comic(url,comicName) # uses the function defined above to download the comic
print url
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)
print url
if 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: # quit the program if any number outside this range shows up
quit
except IOError: # urllib raises an IOError for a 404 error, when the comic doesn't exist
errorCount+=1 # add one to the error count
if errorCount>3: # if more than three errors occur during downloading, quit the program
break
else:
print str("comic"+ ' ' + str(comicCounter) + ' ' + "does not exist") # otherwise say that the certain comic number doesn't exist
print "all comics are up to date" # prints if all comics are downloaded
beautifulsoup
? โพสต์นี้แสดงอยู่ในรายการbeautifulsoup
คำถามยอดนิยม