zoukankan      html  css  js  c++  java
  • 网络爬虫(2)--异常处理

    上一节中对网络爬虫的学习的准备工作作了简要的介绍,并以一个简单的网页爬取为例子。但网络是十分复杂的,对网站的访问并不一定都会成功,因此需要对爬取过程中的异常情况进行处理,否则爬虫在遇到异常情况时就会发生错误停止运行。

    让我们看看urlopen中可能出现的异常:
    html = urlopen("http://www.heibanke.com/lesson/crawler_ex00/")

    这行代码主要可能发生两种异常:

    1.网页在服务器上不存在(或获取页面的时候出现错误)
    2.服务器不存在
    第一种异常发生时,程序会返回HTTP错误,urlopen函数会抛出“HTTPError”异常。
    第二种异常,urlopen会返回一个None对象。
    加入对这两种异常的处理后,上一节中的代码如下:
     1 __author__ = 'f403'
     2 #coding = utf-8
     3 from urllib.request import urlopen
     4 from urllib.error import HTTPError
     5 from bs4 import BeautifulSoup
     6 
     7 try:
     8    html = urlopen("http://www.heibanke.com/lesson/crawler_ex00/")
     9    if html is None:
    10       print("Url is not found")
    11    else:
    12       bsobj = BeautifulSoup(html,"html.parser")
    13       print(bsobj.h1)
    14 except HTTPError as e:
    15    print(e)

    加入异常处理后,可以处理网页访问中发生的异常,可以保证网页从服务器的成功获取。但这不能保证网页的内容和我们的预期一致,如上面的程序中,我们不能保证h1标签一定存在,因此我们需要考虑这类异常。

    这类异常也可以分为2类:
    1.访问一个不存在的标签
    2.访问一个不存的标签的子标签
    第一种情况出现时,BeautifulSoup返回一个None对象,而第二种情况会抛出AttributeError。
    加入这部分的异常处理后,代码为:
     1 __author__ = 'f403'
     2 #coding = utf-8
     3 from urllib.request import urlopen
     4 from urllib.error import HTTPError
     5 from bs4 import BeautifulSoup
     6 
     7 try:
     8    html = urlopen("http://www.heibanke.com/lesson/crawler_ex00/")
     9    if html is None:
    10       print("Url is not found")
    11    else:
    12       bsobj = BeautifulSoup(html,"html.parser")
    13       try:
    14          t = bsobj.h1
    15          if t is None:
    16             print("tag is not exist")
    17          else:
    18             print(t)
    19       except AttributeError as e:
    20          print(e)
    21 except HTTPError as e:
    22    print(e)

    来自为知笔记(Wiz)



  • 相关阅读:
    使用静态全局对象自动做初始化与清理工作
    ThinkpadR617755BH1安装Mac Leopard10.5.2
    ubuntu常用快捷键
    linux常用命令
    c++对象内存模型【内存对齐】
    将ubuntu引导项加入windowsXP启动菜单中
    ISO C++委员会批准C++0x最终草案
    图片转eps格式
    Latex 点滴记录
    我是一个硬盘
  • 原文地址:https://www.cnblogs.com/haoliuhust/p/5608251.html
Copyright © 2011-2022 走看看