Python爬虫提高之异常处理

文章目录 [ 隐藏 ]

Python爬虫框架之异常处理

任何访问服务器获取数据的请求,都需要做异常处理,当然爬虫更需要我们对各种异常进行处理。只有这样才能提高爬虫的健壮性。如果我们的爬虫足够健壮,那么就能确保程序几个月不停止。

我们从以下几个方面做出讲解:

  • 一:try except处理异常代码块
  • 二:普通请求函数的超时处理
  • 三:selenium+chrome | phantomjs 的超时处理
  • 四:自定义函数的死锁or超时处理
  • 五:自定义线程的死锁or超时处理
  • 六:自重启的程序设计

一:基础try except异常处理

try except的语句可以让我们的程序跳过代码中可能出现的异常

二:请求函数的超时处理

2.1:普通请求:

2.1.1单请求类型:

2.1.2会话保持类型:

三:selenium+chrome | phantomjs 的超时处理

2.2.1:selenium+chrome的超时设置

官网原文:http://selenium-python.readthedocs.io/waits.html

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

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

2.2.2:phantomjs的超时设置

这里使用不带selenium的phantomjs,需要使用js。主要设置语句是

四:自定义函数的死锁or超时处理

这个非常重要!!

python是顺序执行的,但是如果下一句话可能导致死锁(比如一个while(1))那么如何强制让他超时呢?他本身如果没有带有超时设置的话,就要自己运行信号(import signal)来处理

五:自定义线程的死锁or超时处理

在某个程序中一方面不适合使用selenium+phantomjs的方式(要实现的功能比较难不适合)因为只能用原生的phantomjs,但是这个问题他本身在极端情况下也有可能停止(在超时设置之前因为某些错误)

那么最佳方案就是用python单独开一个线程(进程)调用原生phantomjs,然后对这个线程进程进行超时控制。

这里用ping这个命令先做测试,

六:程序自动重启

比如我们的程序在某种情况下报错多次,那么当满足条件后,让其重启即可解决大多数问题,当然这只不过是治标不治本而已,如果这个程序重启没有大问题(例如读队列类型)那么自重启这是最省力的方式之一。

未经允许不得转载:Python在线学习 » Python爬虫提高之异常处理

赞 (0)

来吐槽吧 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址