绕过Selenium中的IOErrors和HTTP异常

时间:2015-03-15 17:50:26

标签: python selenium

我正在尝试运行一个大型的抓取工作,在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

1 个答案:

答案 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)