爬虫 喵星人图片下载工具

爬取喵星人图片下载网站用easygui提供交互界面输入图片尺寸并下载图片到本地。难度不大,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
'''本脚本是利用easygui提供的交互程序在placekitten.com下载喵星人图片'''
import urllib.request as ur
import easygui as eg
import os
#基础信息,默认尺寸
msg = '输入图片尺寸'
title = '喵星人图片下载 v1.0 Developer:SonicHuang'
length = '400'
width = '600'

while True:
size = eg.multenterbox(msg, title, ['长', '宽'], [length, width])
if size != None and size[0] != '' and size[1] != '':
length = size[0]
width = size[1]
url = ''.join(['http://placekitten.com/g/', length, '/', width])
#处理网络异常和输入错误
try: #int()的参数必须为整数
int(length)
int(width)
response = ur.urlopen(url)
except: #提示异常信息并返回主循环重新输入
eg.msgbox( '出错了!请检查输入的数据(必须为整数)和检查网络是否连接.', title, 'OK')
continue
else:
#直接读取图片,并保存为一个临时图片
catimage = response.read()
with open('temp.jpg', 'wb') as f1:
f1.write(catimage)
#预览临时图片
asksave = eg.buttonbox('预览\n需要保存请点击图片', title, ('保存图片', '重新输入尺寸', '退出'), 'temp.jpg')
#删除临时文件再保存图片,如果点击了图片会返回图片名
if asksave == '保存图片' or asksave == 'temp.jpg':
os.remove('temp.jpg')
savepath = eg.filesavebox('选择需要保存的位置', title = title, default = 'newimage.jpg', filetypes = ['*.jpg'])
if savepath == None:#点击取消或者X返回None
ask = eg.buttonbox('要继续下载吗?', title, ('继续', '退出'))
if ask == '继续':
continue
else:
break
else:
with open(savepath, 'wb') as f:
f.write(catimage)
ask = eg.buttonbox('要继续下载吗?', title, ('继续', '退出'))
if ask == '继续':
continue
else:
break
#如果不喜欢这个图片或者尺寸,删除之前的临时图片,再重新输入尺寸
elif asksave == '重新输入尺寸':
os.remove('temp.jpg')
continue
#退出时也要删除临时文件
else:
os.remove('temp.jpg')
break
elif size == None:#退出
break
else:#输入错误时
feedback = eg.buttonbox('输入错误,请重新输入?', title, ('重新输入', '退出'))
if feedback == '重新输入':
continue
else:
break

pyinstaller打包后:参考用PyInstaller-3.4打包python程序为exe程序 下载一个封面图片

预览图片

总结:

  1. 脚本写好了初次运行没有报错只是完成了一半,剩下一半或者更多的是调试,修改。
  2. 要坚持写笔记,对于一个普通人来讲很有用,如果你是天才请忽略。
  3. 今天又写了一篇文章记录使用Git, Markdown, Typora使用问题和解决方法。真的感觉Git很复杂,要慢慢理解,遇到问题再解决问题,在实践中学习。