我正在尝试运行一个大型的抓取工作,在Python中使用Selenium和PhantomJS。在正确运行约24小时后,它会抛出几个不同的错误。测试了几次。显然,添加的任何新代码都有点难以测试,因为我必须等待24小时才能看到它已经解决了。所以,我想知道是否有更多经验的人可以看看这段代码,看看它是否合适。我想要做的是尽管浏览器出错,仍然保持while循环。
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
答案 0 :(得分:2)
您的代码看起来很好。您可以使用except (httplib.HTTPException, IOError) as e:
,print type(e).__name__
来组合处理程序,然后您可以删除pass
:
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)
我在这里使用logging
module提供日志记录信息; logger.exception()
函数将在输出中包含异常和回溯:
logger = logging.getLogger(__name__)
# ...
except (httplib.HTTPException, IOError) as e:
logger.exception('Ignoring exception, sleeping for 20 seconds')
time.sleep(20)