专栏首页python学习教程Python爬取图片+百度人脸检测过滤高颜值美女

Python爬取图片+百度人脸检测过滤高颜值美女

pexels网站提供了大量贴图,从中搜索美女图片,编写爬虫进行下载,下载后图片中除了女人外,还包含男人,风景、静物和动物,调用百度人脸检测模块识别检测,将其中颜值大于60分的美女保存到另外一个文件夹。爬取图片共计1251张,最后过滤出的美女共计287张。上代码:

爬虫程序:

from bs4 import BeautifulSoup
import requests
import os
import time
save_path = 'F://photos/'
url_path = 'https://www.pexels.com/search/'
headers ={
 'accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
 'user-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36'
}
searchWord = 'beauty'
urls = [url_path+searchWord+'/?page={}'.format(str(i)) for i in range(1,100)]
 
if not os.path.exists(save_path):
 os.mkdir(save_path)
page =1
for url in urls:
 img_list = []
 wb_data = requests.get(url,headers=headers)
 print("当前爬取页面链接",url)
 soup = BeautifulSoup(wb_data.text,'lxml')
 imgs = soup.select('article > a > img')
 for img in imgs:
 photo_src = img.get('src')
 img_list.append(photo_src)
 print("第{}页,共计{}张图片".format(page,len(img_list)))
 for item in img_list:
 data = requests.get(item, headers=headers)
 fp = open(save_path+item.split('?')[0][-10:],'wb')
 fp.write(data.content)
 fp.close()
 page = page+1
 time.sleep(2)

颜值检测程序:

from aip import AipFace
import base64
import os
import time
import shutil
#接入百度AI人脸识别的参数
APP_ID="换成你自己的"
API_KEY = "换成你自己的"
SECRET_KEY = "换成你自己的"
imageType = "BASE64"
options = {}
options["face_field"] = "gender,beauty"
options["face_type"] = "LIVE"
 
#下载图片和筛选图片的文件夹
file_path = 'F://photos/'
copy_file_path = 'F://highScore/'
file_lists=os.listdir(file_path)
 
aipFace =AipFace(APP_ID,API_KEY,SECRET_KEY)
#将图片转换为BASE64格式,这是百度平台的要求
def get_file_content(filePath):
 with open(filePath,'rb') as fp:
 content = base64.b64encode(fp.read())
 return content.decode('utf-8')
 
for file_list in file_lists:
 result = aipFace.detect(get_file_content(os.path.join(file_path,file_list)),imageType,options)
 error_code = result['error_code']
 if error_code == 222202:
 #没有人脸
 continue
 if error_code==223110:
 #人脸太多
 continue
 try:
 sex_type = result['result']['face_list'][-1]['gender']['type']
 #只要美女图片
 if sex_type == 'male':
 continue
 beauty = result['result']['face_list'][-1]['beauty']
 new_beauty = round(beauty/10,1)
 print(file_list,new_beauty)
 if new_beauty>=6:
 copy_src = os.path.join(file_path,str(new_beauty)+'_'+file_list)
 copy_dst = os.path.join(copy_file_path,str(new_beauty)+'_'+file_list)
 #重命名高分照片
 os.rename(os.path.join(file_path,file_list),copy_src)
 #复制高分照片到另外的照片
 shutil.copyfile(copy_src,copy_dst)
 time.sleep(1)
 except KeyError:
 pass
 except TypeError:
 pass

爬取的图片:

过滤后的图片:

看看最高颜值的美女:

较低颜值的女性:

本文分享自微信公众号 - python教程(pythonjc),作者:小雨

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-05-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 用Python写一个模拟qq聊天小程序的代码实例

    今天小编就为大家分享一篇关于用Python写一个模拟qq聊天小程序的代码实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来...

    python学习教程
  • 零基础Python学习路线图,Python学习不容错过

    对于一个零基础的想学习python的朋友来说,学习方法很重要, 学习方法不对努力白费 一定要有一个正确的学习线路与方法

    python学习教程
  • 零基础的他是这样规划Python学习路线的!

     其实Python语言上手还比较容易、它功能强大、语法简单,相对于其他来说学习起来更加容易,也是比较简单的编程语言,被称为胶水语言,适合零基础以及初学者学习,P...

    python学习教程
  • python文件操作

    要用python操作文件,首先就是要获取要操作文件的路径,获取路径常见的函数为dirname、path、getcwd,首先就来介绍这几个函数的不同之处

    听城
  • Python爬虫+颜值打分,5000+图片找到你的Mrs. Right

    本项目利用Python爬虫和百度人脸识别API,针对简书交友专栏,爬取用户照片(侵删),并进行打分。 本项目包括以下内容:

    罗罗攀
  • Python 基于Python实现批量创建目录

    path = os.path.normpath(path) # 去掉路径最右侧的 \\ 、/

    授客
  • python脚本练习

    题目:   在目录xx下,有xx个普通文件,有的文件有后缀名*.txt,有的则没有后缀名,写一个脚本将xx目录下所有文件没有后缀名的文件都重命名为*.txt结尾

    py3study
  • python中的os.path.dirname与os.path.dirname(__file__)的用法

    语法:os.path.dirname(path)  功能:去掉文件名,返回目录  如:

    于小勇
  • 如何使用 tinypng 进行批量压缩

    不管是博客还是产品中,都会涉及图片的使用,但是如果图片体检太大,会影响使用体验,所以网上有各种各样的支持图片压缩的网站,tinypng 是其中的佼佼者。

    sylan215
  • MapReduce工作笔记——Streaming多路输出

    只要在 map reduce脚本中print字符串中加上#file_path 比如要将aaa写入file_path_1 将bbb 写入file_path_2...

    莫斯

扫码关注云+社区

领取腾讯云代金券