哪个主播颜值最高?利用Python采集主播照片,检测颜值后制作排行榜,一目了然!

目录

前言

开始

分析(x0)

分析(x1)

采集的Python代码

采集的效果

颜值检测函数构造

facerg.py

排序源码

结果演示

完整的所有源码

视频教程地址

我有话说


前言

大家好,我叫善念。这是连续更新Python爬虫实战案例的第七天,感觉很多的东西不怎么好写,也不知道该写什么案例了。

大家可以反馈给我一下想要采集哪个网站,或者需要post哪些网站的功能,或脚本、或一些基础知识的讲解。

好好写文章,拒绝各种表情包二改别人文章,每一篇都现写的原创干货,没那么多时间去耍嘴皮子逗你们开心。

开始

目标网站:某鱼的颜值主播

image

好吧,万万没想到还有几个男同胞......

咱们需要的东西就很简单了,采集封面图然后进行颜值检测 ,对检测出来的分数进行排名即可。

分析(x0)

简单地查看了一下网页的元素,可以看到咱们需要的图片在li标签的img标签的src属性中。而每一个li标签都包含了一个主播的信息。


QQ图片20210901132010.png

我多次讲过像这种图片的加载,极有可能是动态加载,就是当咱们拉动下滑条的时候图片会自动刷新出来,就跟上期的【Python】完美采集某宝数据,到底A和B哪个是YYDS?(附完整源代码和视频教程)是一样的。

那么如何看出来它是否是动态加载的呢?

1.教大家一个可以肉眼可查的方法,那就是直接手动快速拉动浏览器的下滑条,你会发现很多的图片加载需要时间,刚出现的时候是一个白板,然后才加载出图像!

2.那就是直接查看网页元素,如果是动态加载,而咱们的浏览器目前还没有往下面滑,就说明下面的图片肯定是没加载出来的。

那么咱们直接看看后面的li标签中是否有咱们的图片数据:

image

明显这个图的格式都不一样,是打不开的,也就是个白板图。

好吧那就说明这个又是个动态加载的网站,那么咱们就开始抓包。

分析(x1)

刷新一下网页就抓到包了,可以看到这个东西呢它有rs1和rs6两个图,rs1是大图另外一个是小图,想采集哪个都行。我这里采集大图。

image

分析一下这个请求,是个get请求,说实话我都没想到是get,那么就有点特殊的了,我们前面只分析了网页元素,按道理咱们需要的数据在网页源代码中应该同样有......不过也没关系,自己去看看就好了,也不建议从源代码中去获取数据。

image

理由就是:可以看到第二页与第一页的网页url是没发生变化的发现没?如果说你从网页源码中去获取,那么你可以获取到第二页的数据,第一页该如何获取呢?所以说千万别从网页源代码中去提取数据。咱们没办法去构造url。

image

而你如果是包就很容易分析出,只需要把url后面的1改成2就是第二页了,这点敏锐大家还是具备的吧?不相信抓下包就可以了。

image
image

是的吧,多页采集的话构造下url即可 。

采集的Python代码

import requests
import jsonpath
import os
from urllib.request import urlretrieve
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36'}

if not os.path.exists('./pic'):
    os.mkdir('./pic')
for i in range(1, 100000):
    try:
        url = f'https://www.douyu.com/gapi/rknc/directory/yzRec/{i}'
        r = requests.get(url, headers=headers)
        names = jsonpath.jsonpath(r.json(), '$..nn')
        pngs = jsonpath.jsonpath(r.json(), '$..rs1')
        for name, png in zip(names, pngs):
            urlretrieve(png, './pic' + '/' + name + '.png')
        print(names)
        print(pngs)
    except:
        exit()

采集的效果

image

颜值检测函数构造

注册百度智能云:地址

按图去选择咱们需要的服务:

image

自己看下技术文档:

image

点击立即使用——创建应用:

image

正常填写就好

image

创建好后点击——管理应用

image
image

拿到API Key与Secret Key

image

看下技术文档,开始构建咱们的函数,不做过多讲解


QQ图片20210901132128.png

提示:模块的安装

pip install baidu-aip
image

facerg.py

#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time    : 2019/5/7 23:20
# @Author  : 善念
# @Software: PyCharm
from aip import AipFace
import base64

def face_rg(file_Path):
    """ 你的 api_id AK SK """
    api_id = '你的id'

    api_key = 'ni de aipkey'

    secret_key = '你自己的key'

    client = AipFace(api_id, api_key, secret_key)
    with open(file_Path, 'rb') as fp:
         data = base64.b64encode(fp.read())

    image = data.decode()

    imageType = "BASE64"
    options = {}
    options["face_field"] = 'beauty'
    """ 调用人脸检测 """
    res = client.detect(image, imageType, options)
    score = res['result']['face_list'][0]['beauty']
    return score

排序源码

from facerg import face_rg
path = r'图片文件夹路径'
images = os.listdir(path)
print(images)
yz = []
yz_dict = {}
for image in images:
    try:
        name = image[0:-4]
        score = face_rg(path + '\\' + image)

        yz_dict[score] = name
        yz.append(score)
    except:
        pass
yz.sort(reverse=True)
for a, b in enumerate(yz):
    print('小姐姐的名字是:{}丨颜值名次是:第{}名丨她的颜值分数为:{}'.format(yz_dict[b], a+1, b))

结果演示

image

完整的所有源码

import requests
import jsonpath
import os
from urllib.request import urlretrieve
# headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36'}
#
# if not os.path.exists('./pic'):
#     os.mkdir('./pic')
# for i in range(1, 100000):
#     try:
#         url = f'https://www.douyu.com/gapi/rknc/directory/yzRec/{i}'
#         r = requests.get(url, headers=headers)
#         names = jsonpath.jsonpath(r.json(), '$..nn')
#         pngs = jsonpath.jsonpath(r.json(), '$..rs1')
#         for name, png in zip(names, pngs):
#             urlretrieve(png, './pic' + '/' + name + '.png')
#         print(names)
#         print(pngs)
#     except:
#         exit()

from facerg import face_rg
path = r'C:\Users\admin\PycharmProjects\pythonProject\1A演示\斗鱼\pic'
images = os.listdir(path)
print(images)
yz = []
yz_dict = {}
for image in images:
    try:
        name = image[0:-4]
        score = face_rg(path + '\\' + image)

        yz_dict[score] = name
        yz.append(score)
    except:
        pass
yz.sort(reverse=True)
for a, b in enumerate(yz):
    print('小姐姐的名字是:{}丨颜值名次是:第{}名丨她的颜值分数为:{}'.format(yz_dict[b], a+1, b))

把facerg.py当成一个自写的模块调用就好了。

我有话说

——当你毫无保留地信任一个人,最终只会有两种结果。不是生命中的那个人,就是生命中的一堂课。

文章的话是现写的,每篇文章我都会说得很细致,所以花费的时间比较久,一般都是两个小时以上。每一个赞与评论收藏都是我每天更新的动力。

原创不易,再次谢谢大家的支持。

① 2000多本Python电子书(主流和经典的书籍应该都有了)

② Python标准库资料(最全中文版)

③ 项目源码(四五十个有趣且经典的练手项目及源码)

④ Python基础入门、爬虫、web开发、大数据分析方面的视频(适合小白学习)

⑤ Python学习路线图(告别不入流的学习)

当然在学习Python的道路上肯定会困难,没有好的学习资料,怎么去学习呢? 
学习Python中有不明白推荐加入交流Q群号:928946953 
群里有志同道合的小伙伴,互帮互助, 群里有不错的视频学习教程和PDF!
还有大牛解答!
image
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,980评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,422评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,130评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,553评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,408评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,326评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,720评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,373评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,678评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,722评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,486评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,335评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,738评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,283评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,692评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,893评论 2 335

推荐阅读更多精彩内容