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

开工

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

 

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方法中魔改

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,使爬取的信息更加符合自己的要求