我是使用異常處理的新手。我正在使用機械化模塊來抓取多個網站。我的程序經常失敗,因爲連接速度很慢,並且請求超時。我希望能夠在每次嘗試之間的30秒延遲後重試網站(例如超時),最多可重試5次。處理來自urllib2的異常和在Python中機械化
我看着this stackoverflow答案,可以看到我如何處理各種異常。我也看到了(雖然看起來很笨拙),我怎麼可以把try/exception放在while循環中來控制5次嘗試......但我不明白如何跳出循環,或者當連接時「繼續」是成功的,並沒有拋出異常。
from mechanize import Browser
import time
b = Browser()
tried=0
while tried < 5:
try:
r=b.open('http://www.google.com/foobar')
except (mechanize.HTTPError,mechanize.URLError) as e:
if isinstance(e,mechanize.HTTPError):
print e.code
tried += 1
sleep(30)
if tried > 4:
exit()
else:
print e.reason.args
tried += 1
sleep(30)
if tried > 4:
exit()
print "How can I get to here after the first successful b.open() attempt????"
我將不勝感激約(1)如何打破循環的一個成功的開放的意見,和(2)如何使整個街區少笨拙/更優雅。
謝謝所有。我完全贊同關於意大利麪代碼的評論。當我問到試圖擺脫笨拙/不雅時,你的建議正是我尋找的那種東西。我也很欣賞我的代碼不僅簡單而且不合邏輯。我將納入更改。 – user02814 2013-03-26 07:21:31