python异常处理

方式一

    try:
        #运行可能产生异常的代码
        except:
        #如果try后面的代码运行错误则运行这部分代码

方式二

    try:
    #运行可能产生异常的代码
    except:
    #如果try后面的代码运行错误则运行这部分代码              
    else:
    #如果没有异常发生 

没有异常处理的程序

以爬取王者荣耀图片为例子

import urllib.request
import os
# http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/191/191-bigskin-1.jpg 王者荣耀图床地址   文件夹191~529 -1表示皮肤 ,之后是-2 、-3...
for num in range(105,600):
    # try:
        path = r'D:\文档\code\web前端\王者荣耀图库\皮肤\ '
        # os.mkdir(path + str(num))         #创建文件夹
        response = urllib.request.urlopen("http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/"+str(num)+"/"+str(num)+"-bigskin-1"+".jpg")  #图片地址
        print(response)
        wangzhe_img = response.read()
        with open('D:\文档\code\web前端\王者荣耀图库\皮肤\ '+ str(num) + '.jpg','wb') as f:
            f.write(wangzhe_img)
    # except:
    #     continue

有异常处理的程序

按照上述方式爬取图片,会遇到当网址无法打开则无法进行下一步的问题(王者荣耀图片网站并不是191~529都有图片,有些英雄之间的编号可能有间隔,因而运行程序遇到这种情况会出现error)

为解决该问题,使用try异常处理,当遇到无法打开的网址时,直接跳过继续循环的下一个步骤,如:

import urllib.request
import os
# http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/191/191-bigskin-1.jpg 王者荣耀图床地址   文件夹191~529 -1表示皮肤 ,之后是-2 、-3...
for num in range(105,600):
    try:
        path = r'D:\文档\code\web前端\王者荣耀图库\皮肤\ '
        # os.mkdir(path + str(num))         #创建文件夹
        response = urllib.request.urlopen("http://game.gtimg.cn/images/yxzj/img201606/skin/hero-info/"+str(num)+"/"+str(num)+"-bigskin-1"+".jpg")  #图片地址
        print(response)
        wangzhe_img = response.read()
        with open('D:\文档\code\web前端\王者荣耀图库\皮肤\ '+ str(num) + '.jpg','wb') as f:
            f.write(wangzhe_img)
    except:
        continue
posted @ 2020-07-14 13:19  赤沙咀-菜虚坤  阅读(46)  评论(0编辑  收藏  举报