您的位置:新闻资讯 >文章内容
http代理工程师分享python爬虫异常和超时处理方法
来源:本站 作者:admin 时间:2019-05-08 14:44:17

http代理工程师分享python爬虫异常和超时处理方法!写代码总是会出异常的,尤其是爬虫这类程序,无法确保每次请求都能稳定的返回统一的结果,比如反爬虫策略提升,代理IP超时,程序异常等等,处理好这些问题,才能保证爬虫程序持续的运行下去。


python爬虫怎么处理异常和超时

http代理工程师分享python爬虫异常和超时处理方法:


一、反爬虫策略。这里不多说,之前有讨论过。


二、超时设置。网络总是不会一如既往的稳定如一,可能代理IP某个时间不稳定,也可能目标服务器某个时间不稳定,还有自身机器的网络也可能不稳定,如果不设置好超时,程序也不好跑下去。


selenium+chrome的超时设置:


显式等待:、等待某个条件发生,然后再继续进行代码。


driver=webdriver.Firefox()


driver.get("http://somedomain/url_that_delays_loading")


try:


element=WebDriverWait(driver, 10).until(  #这里修改时间


EC.presence_of_element_located((By.ID, "myDynamicElement"))


)


finally:


driver.quit()


隐式等待:是告诉WebDriver在尝试查找一个或多个元素(如果它们不是立即可用的)时轮询DOM一定时间。默认设置为0,一旦设置,将为WebDriver对象实例的生命期设置隐式等待。


driver=webdriver.Firefox()


driver.implicitly_wait(10) # seconds


driver.get("http://somedomain/url_that_delays_loading")


myDynamicElement=driver.find_element_by_id("myDynamicElement")


三、异常处理。是程序就会有异常,不管是什么程序,python使用try&except语句来处理异常。try&except语句不仅仅是要让其捕获异常更重要的是让其忽略异常,因为爬虫中的绝大多数异常可能重新请求就不存在,因此,发现异常的时候将其任务队列进行修复其实是个最省力的好办法。


try:


passhttp://www.***.com#


#可能出错的语句


except Exception,e:


pass


#保留错误的url,留待下次重跑


print e


finally:


#无论是否处理了异常都继续运行


print time.ctime()


四、自重启设置。如果一个程序在某种情况下报错多次,或者运行时间够久远,那么其性能可能会下降,就像一台电脑一样,用的越久就越慢,重启不失为一个好办法,当然这是治标不治本,但无疑是最省力的方法之一,当满足设置的重启条件后,程序自重启,也是让程序持久运行的一个好方法。


相关文章内容简介
在线客服
大客户VIP渠道
点击这里给我发消息
讨论QQ群
HTTP代理IP爬虫
客服电话
13318873961