爬虫升级[python图片爬虫-Ⅱ]

接上次虽然完成了konachan的爬虫,但是一股脑的将图片下载下来后期整理起来可是件烦心事,所以要对上次的python爬虫进行升级定制

开工

  • konachan上的图片大小不一,如果是要拿来当素材壁纸之类可能会对图片的大小有要求

 

1
2
3
4
5
6
7
8
9
10
11
12
from PIL import Image
import os
def imgCheck(fileName):
image = Image.open(fileName)#打开图片
imgSize = image.size#获取图片大小
maxsize = max(imgSize)#获取最大宽度
minsize = min(imgSize)#获取最小宽度
image.close()#关闭图片
if maxsize<1280 :
if minsize<768:
os.remove(fileName)#图片不符合要求删除图片
return 0#返回值表明这张图不符合要求

我是在python3下的环境,所以pillow图片库是个不错的选择
可能会出现PIL库找不到的情况,所以手动安装pip install pillow

  • 通过id方式爬到的图片并没有进行内容筛选,所以可能会爬到你懂的的图片,所以我们可以对图片内容筛选

由于konachan把所有的tag都放到了图片名上,所以我们可以很轻松的在url上用find的方法进行匹配
而且爬虫这种东西有人可能会放在一些树莓派之类的东西上(比如我),如果不是pi3不能直接插移动硬盘,只能上个U盘之类,那就得对爬的容量做出限制
所以我们在getImg方法中魔改

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
def getImg(html):
global filesize#声明全局
reg = r'highres-show" href="(.+?)"'
imgre = re.compile(reg)
imglist = re.findall(imgre,html)
if len(imglist)==0:
return "empty"
splited = imglist[0].split("/")
fileName = splited[len(splited)-1]
if fileName.find("sex")>0:#查找关键字
return "sex"#匹配到则结束方法
fileName = "img/"+fileName
try:
urllib.request.urlretrieve(imglist[0],fileName )#下载图片
except:
return "failed"#如果下载失败
#先在全局定义一个filesize变量每次下载则加进去
filesize+=os.path.getsize(fileName)/1024.0/1024.0
if filesize > 4000:#下载量超出则退出程序
print("out of max size")
exit(0)
if imgCheck(fileName)==0:#imgCheck方法返回0则表示图片大小不符合要求
return "too small"
return fileName

也可以对其他内容进行DIY,使爬取的信息更加符合自己的要求

文章作者: Image
文章链接: https://by.cx/2016/12/07/img-crawler-2/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 编译程序