2013-07-02 6 views
1
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

страница + = 1 в конце цикла while? – lakesh

+2

Ну, учитывая, что ни одна из переменных цикла не изменяется внутри тела цикла, что бы вы ожидали? –

+0

Извините, что я скопировал неправильный код. Фактически у меня была страница + = 1..После этого она не работала –

ответ

9

max_page - это строка, а не число.

>>> 1 < '0' 
True 
+0

Право..Дамни я этого не замечал ... Большое спасибо человеку ... Я должен вам: D –

+2

@HasanSaad Не забудьте [принять его ответ] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) :) – TerryA

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 
+0

Я сделал. Я только что скопировал код hte здесь неправильный..Sorry –

+0

И спасибо за комментарии: D –

+0

Не беспокойтесь, это работает? Если так, как сказал @Haidro, вы должны выбрать ответ, чтобы люди могли найти то, что сработало для вас в будущем. StackOverflow предназначен не только для ответа на ваш вопрос, но и для ответа на вопрос следующих лиц: P –

Смежные вопросы