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