在进行大规模网络爬虫的时候,经常会遇到爬了一会突然抛出一个错误来,然后整个程序就停止了运行。而我们在处于学习爬虫初期的同胞,比如我,一旦出现程序错误停止,就不知道如何在修改程序后接着刚刚爬取的位置继续爬取。就算是我们做了比较好的日志输出,知道是再爬取到哪一页时出现问题,但也不得不在这一页或者这一页的前一页重新开始,然后继续爬虫。虽说不是很麻烦,但自己的程序走一半突然停掉了,就好像吃的冰棒吃的好好的突然掉地上,虽然冲冲会变干净,但总觉得它已经不那么美好了。哈哈~    

     因此在设计爬虫时,做好程序的异常处理还是很重要的。这样当遇到异常时,程序将它捕捉到,并且按照咱们自己的设计输出相应的提醒 。接着程序自己再继续往前走,不会说是一遇到异常,一下子爬到地上装死。那就很尴尬了

  现在我们爬取网页,比较简单常用的是requests库,一般出现异常的地方也就是requests.get(url)时出现的。而在此处出现的异常一般有两种。

1、网页在服务器上不存在或者获取网页时出现错误(HTTP异常)

2、服务器不存在

也有人说是三种,就是本地网络有问题。不过这种就没必要做异常处理了,毕竟一旦出现本地网路有问题,捕捉跟不捕捉结果没什么区别,都是程序装死。

所以主要还是总结一下前两种的异常处理。

首先第一种。发生第一种异常时,程序会返回HTTP错误。我们做异常处理时可以:

from    urllib.error     import     HttpError

try:

     response = requests.get(url)

except HttpError as e:

     print(e)

else:

     程序正常处理         

try、except、else,指的是用try去试探请求,如果请求被捕捉则输出except要输出的内容,else将不再执行,如果不是except

里的异常,则程序去执行else里的内容。

如果不是HTTP异常,而是服务器不存在,或者URL链接错误,则程序会返回URLError,此时异常处理可以在捕捉HTTP基础上再加一条:

from     urllib.error     import    URLError

try:

     response = requests.get(url)

except HttpError as e:

     print(e)

excepu URLErroe as e:

     print('The Server could  not be found')

else:

    正常处理             

以上就是正常的异常处理的步骤。

但在正常的小规模爬取过程中,一般出现异常的也就是几个比较不识好歹的页面,如果觉得异常捕捉太繁琐。我们可以偷个懒,先简单处理之后再去亲自去面谈一下那些异常的页面到底是什么情况。                                 

比如:正常来说我们都是状态码为200时,才能得到包含我们数据的response。

因此我们可以:

response = requests.get(url)

if    response.status_code  ==  200:

       正常处理

else  :

contine

此时我们也可以创建一个列表,当出现else时将它的response.url添加到列表中,最后输出列表。以查看哪些页面出现了问题,或者直接每当遇到问题直接print出来它的链接也可以。

当然前提是出现问题的url页面比较少时使用,正常来说我们还是用最开始说的两种异常处理方式比较正规一点。

                                                                                                                                                                     PS:小胖胖的猪崽

网络爬虫异常处理总结相关推荐

  1. 网络爬虫学习3 - Requests库的七个主要方法、安全性问题与异常处理、反爬虫和Robots协议

    网络爬虫MOOC学习打卡 - 第三天 文章目录 网络爬虫MOOC学习打卡 - 第三天 一.Requests库主要方法解析 0.Requests库的七个主要方法 1.request()方法request ...

  2. Python网络爬虫--urllib

    本篇随便记录学习崔庆才老师编著的<Python3 网络爬虫开发实战>以及urllib标准库使用 urllib库是Python内置的HTTP请求库,包含四个模块: request:最基本的H ...

  3. 精通python网络爬虫-精通Python网络爬虫 PDF 高清版

    给大家带来的一篇关于Python爬虫相关的电子书资源,介绍了关于Python.网络爬虫.核心技术.框架.项目实战方面的内容,本书是由机械工业出版社出版,格式为PDF,资源大小108.6 MB,韦玮编写 ...

  4. 精通python网络爬虫-精通Python网络爬虫:核心技术、框架与项目实战

    -- 目录 -- 前言 第一篇 理论基础篇 第1章 什么是网络爬虫 1.1 初识网络爬虫 1.2 为什么要学网络爬虫 1.3 网络爬虫的组成 1.4 网络爬虫的类型 1.5 爬虫扩展--聚焦爬虫 1. ...

  5. 精通python网络爬虫-精通Python网络爬虫:核心技术、框架与项目实战 PDF

    给大家带来的一篇关于Python爬虫相关的电子书资源,介绍了关于Python.Python网络爬虫.Python核心技术.Python框架.Python项目实战方面的内容,本书是由机械工业出版社出版, ...

  6. 【Python3网络爬虫开发实战】3-基本库的使用 1.2-处理异常

    前一节我们了解了请求的发送过程,但是在网络不好的情况下,如果出现了异常,该怎么办呢?这时如果不处理这些异常,程序很可能因报错而终止运行,所以异常处理还是十分有必要的. urllib的error模块定义 ...

  7. python sub 不区分大小写_Python网络爬虫入门篇

    1. 预备知识 学习者需要预先掌握Python的数字类型.字符串类型.分支.循环.函数.列表类型.字典类型.文件和第三方库使用等概念和编程方法. Python入门篇:https://www.cnblo ...

  8. 一个使用 asyncio 协程的网络爬虫(一)

    2019独角兽企业重金招聘Python工程师标准>>> 导读 A. Jesse Jiryu Davis 是纽约 MongoDB 的工程师.他编写了异步 MongoDB Python ...

  9. python网络爬虫_python小知识,基于Python 的网络爬虫技术分析

    在现阶段大数据的时代中,想要实现对数据的获取和分析,要先具备足够的数据源,网络爬虫技术就为其数据获取提供了良好的条件,且还能够实现对数据源的目的性采集. 在网络爬虫技术应用中,Python 脚本语言的 ...

  10. python简单网络爬虫_【Python】 简单网络爬虫实现

    介绍网络爬虫(英语:网络爬虫),也称为网络蜘蛛(蜘蛛)是一个Web机器人用于自动浏览万维网.其目的通常是为了编译web索引.\u2014\u2014维基百科web爬虫程序可以节省他们访问的页面,以便搜 ...

最新文章

  1. Windows下电脑硬盘的日常维护细则
  2. 程序员经典面试题,高并发系统,一般需要怎么做
  3. Mongodb删除重复数据
  4. UITextView
  5. Thrift Server与Client
  6. 泰山游记:为何爬山后大腿前部很酸?
  7. JAAS(Java 认证和授权服务)
  8. **python 随机生成一段旋律**
  9. 参考《机器学习实战》高清中文PDF+高清英文PDF+源代码
  10. 【考研数学】琴生不等式
  11. django 开发(一) mezzanine源码+ubuntu实现CMS Demo
  12. Maven---尚硅谷学习笔记Eclipse版
  13. 游戏元素属性的设计原则
  14. 算法高级(15)-LVS的负载均衡策略及LVS+KeepAlived+Nginx实现高可用方案
  15. 猜名次 C语言简单的实现
  16. C++用桌面图标系列之三【整理-时钟】
  17. web前端基础教学视频分享(一)html+css+js基础教学(附淘宝网站开发教程)
  18. Java、JSP基于JavaEE的家庭影院系统
  19. thinkserver服务器 信号灯,IBM_X366服务器故障_指示灯介绍
  20. Windows7操作系统的安装

热门文章

  1. 卓一笔记---局部描述符表(LDT寻址表)的使用
  2. T410i开机显示fan error修复
  3. 《缠中说禅108课》25:吻,MACD、背弛、中枢
  4. 项目管理中用什么工具可以增强团队协作?
  5. Oracle sysman.mgmt_jobs导致数据库自动重启
  6. sqlserver2008已成功与服务器建立连接 但在登录过程中发生错误,指定的网络名不可再用(已解决)
  7. 微信小程序帮你赚到第一桶金
  8. PostgreSQL下载和安装教程
  9. C++ emplace_back用法介绍
  10. 求二次方程的根 b^2-4ac的三种可能