Python 绕过Selenium中的IOErrors和HTTP异常
我正在尝试运行一个大型的清理工作,在Python中使用Selenium和PhantomJS。在正确运行大约24小时后,它会抛出几个不同的错误。对此进行了几次测试。显然,添加的任何新代码都有点难以测试,因为我必须等待24小时才能看到任何问题得到解决。所以,我想知道是否有经验的人可以看看这段代码,看看它是否合适。我试图做的是保持while循环在浏览器出错的情况下继续运行Python 绕过Selenium中的IOErrors和HTTP异常,python,selenium,Python,Selenium,我正在尝试运行一个大型的清理工作,在Python中使用Selenium和PhantomJS。在正确运行大约24小时后,它会抛出几个不同的错误。对此进行了几次测试。显然,添加的任何新代码都有点难以测试,因为我必须等待24小时才能看到任何问题得到解决。所以,我想知道是否有经验的人可以看看这段代码,看看它是否合适。我试图做的是保持while循环在浏览器出错的情况下继续运行 while something: try: driver.execute_script("window.s
while something:
try:
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
except httplib.HTTPException:
print 'HTTPException'
time.sleep(20)
pass
except IOError:
print 'IOError'
time.sleep(20)
pass
你的代码看起来不错。您可以使用
except(httplib.HTTPException,IOError)作为e:
,打印类型(e)。\uuuuu name\uuuuu
组合处理程序,并且您可以删除过程:
while something:
try:
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
except (httplib.HTTPException, IOError) as e:
print type(e).__name__
time.sleep(20)
我会在这里使用提供日志信息;logger.exception()
函数将在输出中包含异常和回溯:
logger = logging.getLogger(__name__)
# ...
except (httplib.HTTPException, IOError) as e:
logger.exception('Ignoring exception, sleeping for 20 seconds')
time.sleep(20)
@textnet:no,pass
表示什么都不做,只有当套件为空时才需要它。@textnet:old_length=len(driver.page_source)
行触发了该异常;这句话是不是《试一试》…除了《试一试》?这不在您的问题中。@textnet:请注意,logger.exception()
记录异常的完整回溯,当捕获到异常时,该异常仍会被处理。@textnet:yes,socket.error
是IOError
的子类,因此不需要显式添加它。@textnet:您确实需要将所有需要保护的行放入try
套件中。