爬虫升级[python图片爬虫-Ⅱ]
接上次虽然完成了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,使爬取的信息更加符合自己的要求