我需要访问一个url,如果它给我一个HTTPError,我需要等待五分钟再试一次(这适用于这个特定的网站)。看起来代码没有识别except子句,它仍然立即给我一个HTTPError(不等待5分钟)。
import urllib2, datetime, re,os, requests
from time import sleep
import time
from dateutil.relativedelta import relativedelta
from requests.exceptions import HTTPError, ConnectionError
from bs4 import BeautifulSoup
try:
resp = requests.get(url)
except HTTPError:
while True:
print "Wait."
time.sleep(305)
resp = requests.get(url)
except ConnectionError:
while True:
print "Wait."
time.sleep(305)
resp = requests.get(url)
答案 0 :(得分:0)
您将此resp = requests.get(url)
放入try/except
块,但在except
后再次放置相同的内容。如果有什么东西抛出了错误而你把它放在except
之后,它会再次抛出该错误。
while True:
try:
resp = requests.get(url)
except HTTPError:
print "Wait."
time.sleep(305)
continue #pass the codes after this block
except ConnectionError:
print "Wait."
time.sleep(305)
continue #pass the codes after this block
else:
break
基本上直到你的网址正确响应,它会一次又一次地运行同样的东西。
答案 1 :(得分:0)
在您的except块中,您有:
resp = requests.get(url)
这不受try块的保护,因此会抛出错误。你必须稍微重新安排你的代码:
while True:
try:
resp = requests.get(url)
except HTTPError:
print "Wait."
time.sleep(305)
except ConnectionError:
print "Wait."
time.sleep(305)
else: break
它现在是一个无限循环。当连接失败时,循环就会继续。当它成功时,循环退出。