Python爬虫包BeautifulSoup异常处理(二)


Posted in Python onJune 17, 2018

面对网络不稳定,页面更新等问题,很可能出现程序异常的问题,所以我们要对程序进行一些异常处理。大家可能觉得处理异常是一个比较麻烦的活,但在面对复杂网页和任务的时候,无疑成为一个很好的代码习惯。

网页‘404'、‘500'等问题

try:
    html = urlopen('http://www.pmcaff.com/2221')
  except HTTPError as e:
    print(e)

返回的是空网页

if html is None:
    print('没有找到网页')

目标标签在网页中缺失

try:
    #不存在的标签
    content = bsObj.nonExistingTag.anotherTag 
  except AttributeError as e:
    print('没有找到你想要的标签')
  else:
    if content == None:
      print('没有找到你想要的标签')
    else:
      print(content)

实例

if sys.version_info[0] == 2:
  from urllib2 import urlopen # Python 2
  from urllib2 import HTTPError
else:
  from urllib.request import urlopen # Python3
  from urllib.error import HTTPError
from bs4 import BeautifulSoup
import sys


def getTitle(url):
  try:
    html = urlopen(url)
  except HTTPError as e:
    print(e)
    return None
  try:
    bsObj = BeautifulSoup(html.read())
    title = bsObj.body.h1
  except AttributeError as e:
    return None
  return title

title = getTitle("http://www.pythonscraping.com/exercises/exercise1.html")
if title == None:
  print("Title could not be found")
else:
  print(title)

以上全部为本篇文章的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
使用Python中的cookielib模拟登录网站
Apr 09 Python
Python的gevent框架的入门教程
Apr 29 Python
21行Python代码实现拼写检查器
Jan 25 Python
浅谈Python的文件类型
May 30 Python
Python的Flask站点中集成xhEditor文本编辑器的教程
Jun 13 Python
python实现图像识别功能
Jan 29 Python
python2.x实现人民币转大写人民币
Jun 20 Python
Flask和Django框架中自定义模型类的表名、父类相关问题分析
Jul 19 Python
浅谈python 读excel数值为浮点型的问题
Dec 25 Python
Python如何使用27行代码绘制星星图
Jul 20 Python
Python自定义sorted排序实现方法详解
Sep 18 Python
python实现数学模型(插值、拟合和微分方程)
Nov 13 Python
Python爬虫包BeautifulSoup简介与安装(一)
Jun 17 #Python
python主线程捕获子线程的方法
Jun 17 #Python
Python实现获取邮箱内容并解析的方法示例
Jun 16 #Python
Python实现自定义函数的5种常见形式分析
Jun 16 #Python
Python基于jieba库进行简单分词及词云功能实现方法
Jun 16 #Python
Python实现简单的文本相似度分析操作详解
Jun 16 #Python
Django跨域请求问题的解决方法示例
Jun 16 #Python
You might like
MySQL中create table语句的基本语法是
2007/01/15 PHP
php静态文件返回304技巧分享
2015/01/06 PHP
php基于GD库画五星红旗的方法
2015/02/24 PHP
php数字每三位加逗号的功能函数
2015/10/22 PHP
PHP怎样用正则抓取页面中的网址
2016/08/09 PHP
php实现支持中文的文件下载功能示例
2017/08/30 PHP
PHP对称加密算法(DES/AES)类的实现代码
2017/11/14 PHP
PHP函数按引用传递参数及函数可选参数用法示例
2018/06/04 PHP
PHP判断访客是否手机端(移动端浏览器)访问的方法总结【4种方法】
2019/03/27 PHP
滚动图片效果 jquery实现回旋滚动效果
2013/01/08 Javascript
js+css实现的简单易用兼容好的分页
2013/12/30 Javascript
jquery检测input checked 控件是否被选中的方法
2014/03/26 Javascript
JavaScript 事件入门知识
2015/04/13 Javascript
JavaScript学习笔记之数组去重
2016/03/23 Javascript
jQuery基于ajax方式实现用户名存在性检查功能示例
2017/02/10 Javascript
使用MUI框架模拟手机端的下拉刷新和上拉加载功能
2017/09/04 Javascript
浅谈Webpack 持久化缓存实践
2018/03/22 Javascript
jQuery-ui插件sortable实现自由拖动排序
2018/12/01 jQuery
vue+elementUI实现表单和图片上传及验证功能示例
2019/05/14 Javascript
深度了解vue.js中hooks的相关知识
2019/06/14 Javascript
详解vuex的简单todolist例子
2019/07/14 Javascript
jquery ajax 请求小技巧实例分析
2019/11/11 jQuery
Python虚拟环境virtualenv的安装与使用详解
2017/05/28 Python
python数字类型math库原理解析
2020/03/02 Python
Python 面向对象静态方法、类方法、属性方法知识点小结
2020/03/09 Python
查看已安装tensorflow版本的方法示例
2020/04/19 Python
在tensorflow下利用plt画论文中loss,acc等曲线图实例
2020/06/15 Python
Django路由层URLconf作用及原理解析
2020/09/24 Python
PHP开发的一般流程
2013/08/13 面试题
建筑专业毕业生推荐信
2013/11/21 职场文书
机械设计专业大学生职业生涯规划书范文
2014/09/13 职场文书
党员自我评价范文2015
2015/03/03 职场文书
青年教师听课心得体会
2016/01/15 职场文书
css3中transform属性实现的4种功能
2021/08/07 HTML / CSS
Vue.Draggable实现交换位置
2022/04/07 Vue.js
SpringCloud项目如何解决log4j2漏洞
2022/04/10 Java/Android