【Python学习笔记2】Python网络爬虫的异常处理

2023-11-11

本文信息主要来源于韦玮老师的《精通python网络爬虫》,仅作为个人学习笔记。

通过python库函数urllib.request去爬取网页时,遇到的异常主要时URL类和网页类的错误,python已提供URLError类和HTTPError类来处理。

【URLError】可能原因:

1、链接不上服务器;2、远程URL不存在;3、无网络

【HTTPError】可能原因,可通过状态码分类:

状态码 解释
200 OK,一切正常
301 Moved Permently 重定向到新的URL,永久性
302 Found 重定向到临时的URL,非永久性
304 Not Modified 请求的资源未更新
400 Bad Request 非法请求
401 Unauthorized  请求未经授权
403 Forbidden  禁止访问。 伪装成浏览器是可能的解决办法
404 Not Found 没有找到对应页面
500 Internal Server Error  服务器内部出现错误
501 Not Implemented  服务器不支持实现请求所需的功能

因此在爬虫程序中,最好捕捉这2类异常,方便定位问题。测试代码如下,2个网址可以分别构造URLError和HTTPError

如果不是这2个异常,会自动抛出系统异常的打印。

如果不想处理异常,可以通过pass关键字屏蔽异常。如下代码中最后一个except段,根据实际情况选择。

#!/usr/bin/python3
#-*- coding: utf-8 -*-

import urllib.request
import urllib.error

#访问一个禁止爬虫的网址
try:
    print("开始爬取 网页")
    #urllib.request.urlopen("https://www.ilovemoney.com/")
    urllib.request.urlopen("http://www.douyu.com/Jack_Cui.html")
    print("结束爬取 网页")

except urllib.error.HTTPError as e:
        print("进入HTTPError分支")
        print(e.code)
        print(e.reason)

except urllib.error.URLError as err:
        print("进入URLError分支")
        print(err.reason)

except:
        print("进入默认异常,如果没有这一级的except,自动抛出上一级父类的异常")
        pass

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Python学习笔记2】Python网络爬虫的异常处理 的相关文章

  • 11.网络爬虫—多线程详讲与实战

    11 网络爬虫 多线程详讲与实战 程序 进程 线程 线程常用方法 多线程的优点 join 案例 共享全局变量资源竞争 互斥锁 死锁 互斥锁 死锁 多线程实战 某果多线程实战 前言 个人简介 以山河作礼 Python领域新星创作者 CSDN实
  • 13.网络爬虫—多进程详讲(实战演示)

    网络爬虫 多进程详讲 一 进程的概念 二 创建多进程 三 进程池 四 线程池 五 多进程和多线程的区别 六 实战演示 北京新发地线程池实战 前言 个人简介 以山河作礼 Python领域新星创作者 CSDN实力新星认证 第一篇文章 1 认识网
  • 19.网络爬虫—照片管道

    网络爬虫 照片管道 Scrapy基础 Scrapy运行流程原理 Scrapy的工作流程 scrapy照片管道 实战演示 设置图片路径 配置爬虫 解析数据 运行爬虫 查看文件 后记 前言 个人简介 以山河作礼 Python领域新星创作者 CS
  • [python爬虫] Selenium切换窗口句柄及调用Chrome浏览器

    因为我的博客是根据我每个阶段自己做的事情而写的 所以前言可能有点跑题 但它更有利于让我回忆这个阶段自己的所作所为 这篇文章主要介绍Selenium爬虫获取当前窗口句柄 切换窗口句柄以及调用Chrome浏览器几个知识点 其中获取当前句柄的方法
  • 使用代理服务获取网页源代码测试

    import requests url 输入测试访问网址 headers User Agent Mozilla 5 0 Windows NT 10 0 Win64 x64 AppleWebKit 537 36 KHTML like Geck
  • 10.网络爬虫—MongoDB详讲与实战

    网络爬虫 MongoDB详讲与实战 MongoDB MongoDB安装 创建数据目录 1 数据库操作 2 集合操作 3 文档操作 4 索引操作 5 聚合操作 6 备份与恢复 MongoDB增删改查 mongodb集合的增删改查 数据插入到表
  • [python爬虫] BeautifulSoup和Selenium对比爬取豆瓣Top250电影信息

    这篇文章主要对比BeautifulSoup和Selenium爬取豆瓣Top250电影信息 两种方法从本质上都是一样的 都是通过分析网页的DOM树结构进行元素定位 再定向爬取具体的电影信息 通过代码的对比 你可以进一步加深Python爬虫的印
  • 5.网络爬虫——Xpath解析

    网络爬虫 Xpath解析 Xpath简介 Xpath解析 节点选择 路径表达式 谓语 未知节点 Xpath实战演示 豆果美食实战 获取数据 源代码 前言 此专栏文章是专门针对Python零基础爬虫 欢迎免费订阅 第一篇文章获得全站热搜第一
  • [python爬虫] 招聘信息定时系统 (一).BeautifulSoup爬取信息并存储MySQL

    这系列文章主要讲述 如何通过Python爬取招聘信息 且爬取的日期为当前天的 同时将爬取的内容保存到数据库中 然后制作定时系统每天执行爬取 最后是Python调用相关库发送短信到手机 最近研究了数据库的定时计划备份 联系爬虫简单做了这个实验
  • Python网络爬虫--项目实战(2)--起点小说爬取

    一 目标 爬取起点小说一本免费小说 并将所有章节名称和内容都保存到本地 我选择爬取 我真的好想打球 二 分析 2 1 网页分析 ctrl U 进入网页的源代码 输入任意章节名称 可以在代码中找到 初步判定该网页为静态加载的 2 2 反爬分析
  • Python网络爬虫:50行代码爬取CSDN博客文章列表 并将点赞评论等数据存储到Excel表格

    hello 大家好 我是wangzirui32 今天我们来学习如何爬取CSDN博客文章列表 并将数据存储到Excel里 开始学习吧 Tips 本节课有点复杂 请耐心学习 学习目录 前言 1 网页代码分析 2 编写代码 写在最后 前言 最近
  • 7.网络爬虫—正则表达式详讲

    7 网络爬虫 正则表达式详讲与实战 Python 正则表达式 re match 函数 re search方法 re match与re search的区别 re compile 函数 检索和替换 检索 替换 findall re findit
  • [python知识] 爬虫知识之BeautifulSoup库安装及简单介绍

    一 前言 在前面的几篇文章中我介绍了如何通过Python分析源代码来爬取博客 维基百科InfoBox和图片 其文章链接如下 python学习 简单爬取维基百科程序语言消息盒 Python学习 简单网络爬虫抓取博客文章及思想介绍 python
  • 16.网络爬虫—字体反爬(实战演示)

    网络爬虫 字体反爬 一 字体反爬原理 二 字体反爬模块Fonttools TTF文件 三 FontCreator 14 0 0 2790 FontCreatorPortable下载与安装 四 实战演示 五 后记 前言 个人简介 以山河作礼
  • 抖音综合榜单数据爬虫案例

    偶然在抖音创作平台中看到了一系列的排行榜 如热搜榜 热门视频榜 娱乐明星榜 音乐榜等等 网页链接 https creator douyin com billboard home 登陆后可见数据 榜单接口 接口名 类型 链接 热搜榜单 Get
  • python网络爬虫--项目实战--scrapy爬取贝壳网(7)

    一 完整代码 bk py import json import scrapy from ScrapyAdvanced items import HouseItem class BkSpider scrapy Spider name bk a
  • python网络爬虫--selenium(6)--练习

    一 打开网页获取页面源码 from selenium webdriver chrome import webdriver 初始化 需要加载浏览器驱动 driver webdriver WebDriver executable path ch
  • python网络爬虫--练习

    一 爬取王者荣耀英雄信息 单页 import json import pymysql import requests from lxml import etree def get heros url response requests ge
  • 4.网络爬虫—Post请求(实战演示)

    网络爬虫 Post请求实战演示 POST请求 GET请求 POST请求和GET请求的区别 获取二进制数据 爬 百度官网 https www baidu com logo实战 发送post请求 百度翻译实战 使用session发送请求 模拟登
  • [Python爬虫] Selenium获取百度百科旅游景点的InfoBox消息盒

    前面我讲述过如何通过BeautifulSoup获取维基百科的消息盒 同样可以通过Spider获取网站内容 最近学习了Selenium Phantomjs后 准备利用它们获取百度百科的旅游景点消息盒 InfoBox 这也是毕业设计实体对齐和属

随机推荐