在进行大规模网络爬虫的时候,经常会遇到爬了一会突然抛出一个错误来,然后整个程序就停止了运行。而我们在处于学习爬虫初期的同胞,比如我,一旦出现程序错误停止,就不知道如何在修改程序后接着刚刚爬取的位置继续爬取。就算是我们做了比较好的日志输出,知道是再爬取到哪一页时出现问题,但也不得不在这一页或者这一页的前一页重新开始,然后继续爬虫。虽说不是很麻烦,但自己的程序走一半突然停掉了,就好像吃的冰棒吃的好好的突然掉地上,虽然冲冲会变干净,但总觉得它已经不那么美好了。哈哈~
因此在设计爬虫时,做好程序的异常处理还是很重要的。这样当遇到异常时,程序将它捕捉到,并且按照咱们自己的设计输出相应的提醒 。接着程序自己再继续往前走,不会说是一遇到异常,一下子爬到地上装死。那就很尴尬了
现在我们爬取网页,比较简单常用的是requests库,一般出现异常的地方也就是requests.get(url)时出现的。而在此处出现的异常一般有两种。
1、网页在服务器上不存在或者获取网页时出现错误(HTTP异常)
2、服务器不存在
也有人说是三种,就是本地网络有问题。不过这种就没必要做异常处理了,毕竟一旦出现本地网路有问题,捕捉跟不捕捉结果没什么区别,都是程序装死。
所以主要还是总结一下前两种的异常处理。
首先第一种。发生第一种异常时,程序会返回HTTP错误。我们做异常处理时可以: