帮助中心

   

热门搜索: 免费续期  推广  永久会员

代理IP爬虫知识:异常与超时情况如何解决?

我们都希望爬虫不要出现任何差错,当然如果能够一次性解决,那当然是好事。但是敲代码这种技术与细致都需要兼具的工作,不能够保证每一次请求都能够返回我们想要的结果。代理IP的异常、反爬虫的阻止等等都会影响到爬虫开展。

 

 

那么,当爬虫过程出现异常跟超时情况,我们应该怎么处理?

 

一、反爬虫机制

 

之前已经做过介绍,在这里就不再展开来讲,参考阅读:代理IP反爬虫技术总结

 

二、超时设置

 

网络总是不会一如既往的稳定如一,可能代理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语句不仅仅是要让其捕获异常更重要的是让其忽略异常,因为爬虫中的绝大多数异常可能重新请求就不存在,因此,发现异常的时候将其任务队列进行修复其实是个最省力的好办法。

关闭
19907977089
关注微信公众号,免费送30分钟时长