Python爬虫入门教程 96-100 帮粉丝写Python爬虫之【强滤镜照片打分】

174 阅读2分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第15天,点击查看活动详情

💗 你正在阅读  【梦想橡皮擦】  的博客
👍 阅读完毕,可以点点小手赞一下
🌻 发现错误,直接评论区中指正吧
📆 橡皮擦的第 707 篇原创博客

给美女打分,好需求,这个需求听到就想把它快速的实现,对于这样的需求,梦想橡皮擦一直是来者不拒的。

写在前面

本案例实现基本思路:

  1. 获取页面上所有人物头像的缩略图(采集图片过程,可参考 codechina 源码或过往案例)
  2. 调用人脸打分API,为图片打分
  3. 将得分最高的图片打开,欣赏

编码时间

关于人脸打分检测,调用的是百度的API,具体网址如下:

console.bce.baidu.com/ai/?_=16024…

使用百度账号登录之后,创建应用即可获取所需参数。

Python爬虫入门教程 96-100 帮粉丝写Python爬虫之【强滤镜照片打分】 API的使用方法和下载。 下载地址:ai.baidu.com/docs#/Face-…
使用说明:ai.baidu.com/ai-doc/FACE…

保存图片代码如下,在保存的过程中需要对图片进行打分,当然你直接下载全部图片,在对本地图片打分也可

import time
import requests
from fake_useragent import UserAgent
from aip import AipFace
import base64
import json
user_agent = UserAgent()
headers = {
    "user-agent": user_agent.random,
    "referer": "https://www.pingbi.com",
    "x-requested-with": "XMLHttpRequest",
    "content-type": "application/x-www-form-urlencoded; charset=UTF-8"
}


def beauty(base64_data):
	""" 你的 APPID AK SK """
	APP_ID = '你的 App ID'
	API_KEY = '你的 Api Key'
	SECRET_KEY = '你的 Secret Key'

client = AipFace(APP_ID, API_KEY, SECRET_KEY)

    client = AipFace(APP_ID, API_KEY, SECRET_KEY)

    # image = "https://rpic.pingbiucdn.cn/live-cover/appCovers/2020/08/27/6796447_20200827022844_big.jpg/dy2"
    image = base64_data

    imageType = "BASE64"

    """ 调用人脸检测 """
    client.detect(image, imageType)

    """ 如果有可选参数 """
    options = {}
    options["face_field"] = "age,beauty,gender"
    options["max_face_num"] = 2
    options["face_type"] = "LIVE"
    options["liveness_control"] = "LOW"

    """ 带参数调用人脸检测 """
    a = client.detect(image, imageType, options)
    return a


def save_imgs(rl):

    for user in rl:
        # https://www.pingbi.com/9190725
        rid = user["rid"]
        face = user["rs1"]
        try:
            print("访问接口等待中")
            time.sleep(2)
            res = requests.get(face, headers=headers)
            img = res.content

            base64_data = str(base64.b64encode(img), encoding='utf-8')
            bea = beauty(base64_data)

            if bea["error_code"] == 222202:
                print("非人类!")
                with open(f"./faces/非人:{rid}.jpg", "wb") as file:
                    file.write(img)
            else:
                # 获取得分
                print(bea)
                beauty_count = bea["result"]["face_list"][0]["beauty"]

                with open(f"./faces/{beauty_count}{rid}.jpg", "wb") as file:
                    file.write(img)

        except Exception as e:
            print(e)

上述代码中有个接口访问限制时间,该时间是百度API调用的限制时间,建议设置为1~2秒。 代码编写完毕 ,运行效果如图,在代码中加入了一些判断,打分之后会写入到文件名中,这样我们就能发现最高分了。

Python爬虫入门教程 96-100 帮粉丝写Python爬虫之【强滤镜照片打分】 通过批量调用手中的人脸照片进行打分,高分头像可以用作表情包。这里面混入了一些男人

Python爬虫入门教程 96-100 帮粉丝写Python爬虫之【强滤镜照片打分】

最神奇的是接口判断下面是非人类....这就比较神奇了。代码难度不大,查看置顶评论即可。

Python爬虫入门教程 96-100 帮粉丝写Python爬虫之【强滤镜照片打分】