Python爬虫--异常处理

1. 异常处理概述

程序在运行的时候难免会遇到各种各样的问题,

如果没有异常处理,那么程序遇到问题的时候就可能奔溃,

这样就非常耗时又麻烦了,

为了避免这种情况发生,就需要开发一个具备异常处理的程序。


2. 常见状态码及含义

状态码解释
301Moved Permanently: 重定向到新的URL,永久性
302Found: 重定向到临时的URL,非永久性
304Not Modified: 请求的资源未更新
400Bad Request: 非法请求
401Unauthorized: 请求未经授权
403Forbidden: 禁止访问
404Not Found: 没有找到对应的页面
500Internal Server Error: 服务器内部出现错误
501Not Implemented: 服务器不支持实现请求所需要

3. URLError与HTTPError

两者都是异常处理的类,HTTPError 是 URLError 的子类,

HTTPError 有异常状态码与异常原因,

URLError 没有异常状态码,

所以在处理的时候,不能直接使用 URLError 直接代替 HTTPError ,

如果要代替,必须要判断是否有状态码属性。


4. 异常处理实战

URLError 出现的原因:

  1. 连接不上服务器
  2. 远程url不存在
  3. 无网络
  4. 触发 HTTPError

代码:

我们使用 try except 来捕获异常


import urllib.request
import urllib.error   # 导入异常捕获模块try:urllib.request.urlopen("http://")except urllib.error.URLError as e:if hasattr(e,"code"):  # 判断有没有状态码print(e.code)if hasattr(e,"reason"):  #  reason 是 URLError类中的一个属性,返回错误的原因print(e.reason)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/6344.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++基础——输入输出(文件)

一、标准输入输出流 C 的输入输出是程序与用户或外部设备(如文件、网络等)之间交换信息的过程。 C 提供了丰富的标准库来支持这种交互,主要通过流的概念来实现。 流:抽象概念,表示一连串的数据(字节或字…

typescript:vscode的settings配置文件配置ts语法提示

typescript:vscode的settings配置文件配置ts语法提示 1 找到vscode左下角的齿轮按钮 2 点击Settings(或者快捷键ctrl,): 点击右上角的Open Settings(JSON)按钮打开配置文件: 或者ctrlshiftp,搜索settings&…

展开说说:Android实现多线程几种方式

1、线程是什么 关于线程,Android开发经常遇到的一个和线程相关的异常报错:NetworkOnMainThreadException,因为网络请求不可以运行在主线程(又称UI线程)。和网络请求一样的还有I/O操作、数据库操作等耗时任务一样都只能…

奈氏准则和香农定理

一、奈奎斯特和香农 哈里奈奎斯特(Harry Nyquist)(左) 克劳德艾尔伍德香农(Claude Elwood Shannon)(右) 我们应该在心里记住他们,记住所有为人类伟大事业做出贡献的人,因为他们我们的生活变得越来越精彩&…

使用xshell工具连接ubuntu的root账户被拒绝的解决方法

问题描述: 我在使用xshell工具远程连接Ubuntu虚拟机的过程中,如果连接的是的普通用户则xshell工具可以正常连接,但是当我向连接ubuntu系统的root用户,即便是密码输入正确但还是不能连接成功。不能连接成功的截图如下: …

从零开始学AI绘画,万字Stable Diffusion终极教程(二)

【第2期】关键词 欢迎来到SD的终极教程,这是我们的第二节课 这套课程分为六节课,会系统性的介绍sd的全部功能,让你打下坚实牢靠的基础 1.SD入门 2.关键词 3.Lora模型 4.图生图 5.controlnet 6.知识补充 在第一节课里面,我们…

【EXCEL_VBA_实战经验】利用VBA批量解除工作表保护并调整页面设置

要使用VBA批量解除工作表保护并调整页面设置,可以按照以下步骤操作: 1. 打开Excel文件,按下AltF11键,打开VBA编辑器。 2. 点击菜单栏的插入,选择模块,在模块中输入以下代码: vba Sub Unprotec…

SAS SQL

SAS SQL 语法SQL CREATESQL SELECTSQL SELECT with WHERE ClauseSQL UPDATESQL DELETE 语法 proc sql;select columnsfrom tablewhere columnsgroup by columns ; quit;SQL查询在proc sql语句之后,加上quit语句,用于结束SQL查询 SQL CREATE data exam…

【Python进阶(七)】——Series数据结构

🍉CSDN小墨&晓末:https://blog.csdn.net/jd1813346972 个人介绍: 研一|统计学|干货分享          擅长Python、Matlab、R等主流编程软件          累计十余项国家级比赛奖项,参与研究经费10w、40w级横向 文…

牛客Xorto

Xorto 题目描述 给定一个长度为n的整数数组&#xff0c;问有多少对互不重叠的非空区间&#xff0c;使得两个区间内的数的异或和为0。 输入描述: 第一行一个数n表示数组长度&#xff1b; 第二行n个整数表示数组&#xff1b; 1<n<1000,0<数组元素<100000。 输出…

PS 2018

软件安装 文件太大&#xff0c;分批上传了&#xff0c;后续下载下来文件目录是这样的&#xff0c; 三个文件夹.7z 分批上传&#xff0c;exe也压缩分批上传&#xff0c; 其中products文件夹太大&#xff0c;里面子目录继续压缩分批上传 都下好了&#xff0c;就exe执行安装就行…

如何使用提示测试为LLMs构建单元测试?

原文地址&#xff1a;how-to-build-unit-tests-for-llms-using-prompt-testing 确保您的人工智能交付&#xff1a;快速测试完美生成应用程序的基本指南 2024 年 4 月 26 日 如果你曾经编写过软件&#xff0c;你就会知道测试是开发过程中必不可少的一部分。特别是单元测试&#…

Git推送本地项目到gitee远程仓库

Git 是一个功能强大的分布式版本控制系统&#xff0c;它允许多人协作开发项目&#xff0c;同时有效管理代码的历史版本。开发者可以克隆一个公共仓库到本地&#xff0c;进行更改后将更新推送回服务器&#xff0c;或从服务器拉取他人更改&#xff0c;实现代码的同步和版本控制。…

String str = new String(“Hello, World!“);

在Java中&#xff0c;当你执行 String str new String("Hello, World!"); 这行代码时&#xff0c;实际上发生了几件事情&#xff1a; 字符串常量池中的字符串&#xff1a;首先&#xff0c;Java会检查字符串字面量 "Hello, World!" 是否已经在字符串常量池…

BUUCTF:Web 解析(一)

前言 Buuctf Web 是一个在线安全挑战平台&#xff0c;旨在提高参与者对网络安全的理解和实践能力。本文将详细介绍 Buuctf Web 的特点、挑战和机遇&#xff0c;帮助读者更好地了解这一领域。 一、Buuctf Web 的特点 多样化的挑战场景&#xff1a;Buuctf Web 提供了多种挑战场…

C++中的priority_queue模拟实现

目录 priority_queue模拟实现 priority_queue类定义 priority_queue构造函数 priority_queue类push()函数 priority_queue类pop()函数 priority_queue类size()函数 priority_queue类empty()函数 priority_queue类top()函数 仿函数与priority_queue类模拟实现 仿函数 …

金属表面粗糙度对信号的影响

在进行PCB的传输线设计时&#xff0c;如果希望仿真结果更加贴合于实际的效果&#xff0c;就需要考虑很多的附加因素&#xff0c;比如&#xff0c;真实的叠构参数、介电常数、损耗角正切值、蚀刻因子、金属表面粗糙度、玻纤效应等&#xff0c;在常规的信号仿真中&#xff0c;前三…

数据结构---第十天(选择题)

121.当数据库损坏时&#xff0c;数据库管理员可通过&#xff08;&#xff09;恢复数据库 A.事务日志文件 B.主数据文件 C.DELETE语句 D.联机帮助文件 122.下列选项不属于表的操作权限是&#xff08;&#xff09; A.EXECUTE B.UPDATE C.SELECT D.DELETE 123.用于数据库恢…

springboot整合mybatis配置多数据源(mysql/oracle)

目录 前言导入依赖坐标创建mysql/oracle数据源配置类MySQLDataSourceConfigOracleDataSourceConfig application.yml配置文件配置mysql/oracle数据源编写Mapper接口编写Book实体类编写测试类 前言 springboot整合mybatis配置多数据源&#xff0c;可以都是mysql数据源&#xff…