while start_chapter<=end_chapter:
os.makedirs("Chapter "+str(start_chapter))
os.chdir("Chapter "+str(start_chapter))
chap_url=link+"/c"+str(start_chapter)+"/"
page=1
try:
max_page=get_max_page(chap_url)
except:
continue
while(page<=max_page):
page_url=chap_url+str(page)+".html"
try:
pic_url=get_pic(page_url)
except:
break
picture_shit=urllib2.urlopen(pic_url).read()
with open(str(page)+"."+(pic_url.split(".")[len(pic_url.split("."))-1]), 'w') as f: f.write(picture_shit)
print str(start_chapter)+"::"+str(page)
page+=1
os.chdir("../")
start_chapter+=1
内部while循环不会停止,我测试了页面,看到它已经越过max_page这是23但它根本就没有停止。任何人都可以帮忙吗?提前感谢...
答案 0 :(得分:9)
max_page
是一个字符串,而不是数字。
>>> 1 < '0'
True
答案 1 :(得分:3)
这里有很多问题:
page
,因此它永远不会达到max_page
的值(编辑:现已在您的示例中修复)with
区块max_page
不是一个会导致问题的数字,因为Ignacio指出try: continue:
块意味着如果分配max_page时出错,则不会再次分配,从而导致比较问题这可以解决您的大部分问题:
while start_chapter<=end_chapter:
os.makedirs("Chapter "+str(start_chapter))
os.chdir("Chapter "+str(start_chapter))
chap_url=link+"/c"+str(start_chapter)+"/"
page=1
try:
max_page=int(get_max_page(chap_url))
while(page<=max_page):
page_url=chap_url+str(page)+".html"
try:
pic_url=get_pic(page_url)
picture_shit=urllib2.urlopen(pic_url).read()
with open(str(page)+"."+(pic_url.split(".")[len(pic_url.split("."))-1]), 'w') as f:
f.write(picture_shit)
print str(start_chapter)+"::"+str(page)
except:
break
page+=1
except:
continue
os.chdir("../")
start_chapter+=1