Ich habe für ein Programm in den letzten Tagen gearbeitet, die eine Reihe von Seiten aus dem Webcomic Homestuck herunterladen sollte. Ich habe eine funktionierende Version in Python 3 erstellt, aber es ist schrecklich ineffizient. Kann jemand sehen, wie man diesen Code verbessern und verkürzen kann?Erstellen eines Programms zum Herunterladen Homestuck (Python3)
import urllib.request
range1 = int(input("Enter the 1st page you want: "))
range2 = int(input("Enter the last page you want: ")) + 1
current = range1 + 1900
final = range2 + 1900
page = ''
nextPage = ''
while current != final:
page = str(current)
nextPage = str(current+1)
while len(page) != 6:
page = '0'+ page
while len(nextPage) != 6:
nextPage = '0'+ nextPage
html = 'http://www.mspaintadventures.com/?s=6&p='+page
site = urllib.request.urlopen(html)
s = site.read()
s = s.decode("utf8")
s = s.replace("<!-- end comic content -->", "<!-- begin comic content -->")
s = s.replace("http://cdn.mspaintadventures.com/storyfiles/hs2/", "")
s = s.replace("?s=6&p=" + str(nextPage), str(int(nextPage))+".html")
s = s.replace(page+"/"+page, page)
a,b,c = s.split('<!-- begin comic content -->')
b = "<title> Page " + page + "</title>" + b
t = open(str(current)+".html", 'w+')
t.write(b)
t.close()
page = str((int(page)-1900))
while len(page) != 5:
page = '0'+ page
t = open(str(current)+".html", 'a')
swfname=page+".swf"
t.write("<object width='1000' height='1000'> <param name='movie' value='"+swfname+"'>")
t.write("<embed src="+swfname+" width=650 height=450>")
t.write("</embed>")
t.write("</object>")
t.close()
try:
img = "http://cdn.mspaintadventures.com/storyfiles/hs2/"+page+".gif"
urllib.request.urlretrieve(img, page+".gif")
except:
try:
img = "http://cdn.mspaintadventures.com/storyfiles/hs2/"+page+"_1.gif"
urllib.request.urlretrieve(img, page+"_1.gif")
img = "http://cdn.mspaintadventures.com/storyfiles/hs2/"+page+"_2.gif"
urllib.request.urlretrieve(img, page+"_2.gif")
except:
try:
img = "http://cdn.mspaintadventures.com/storyfiles/hs2/"+page+"/"+page+".swf"
urllib.request.urlretrieve(img, page+".swf")
except:
print("Image "+img+" failed to download")
print ("Page " + str(page) + " of " + str(final-1901) + " downloaded")
current+=1
print("DONE")
Vielleicht besser geeignet für http://codereview.stackexchange.com/? Auch - ist Ihre Einrückung korrekt? An diesem Punkt wird Ihr Code nicht über die erste While-Schleife hinausgehen. – SiHa
Der Code funktioniert, deshalb habe ich ihn wahrscheinlich falsch im Stackoverflow formatiert. Auch ich wusste nicht über Codereview, danke –