网站后台实际访问地址与注册的域名地址不同,中国风优秀个人网站欣赏,设计师网站导航,php 网站开发 pdf昨晚一回家#xff0c;表弟就神神秘秘的跟我说#xff0c;发现一个高颜值网站#xff0c;非要拉着我研究一下她们的颜值高低。
我心想#xff0c;这还得要我一个个慢慢看#xff0c;太麻烦了~
于是反手用Python给他写了一个人脸识别代码#xff0c;把她们的照片全部爬下…昨晚一回家表弟就神神秘秘的跟我说发现一个高颜值网站非要拉着我研究一下她们的颜值高低。
我心想这还得要我一个个慢慢看太麻烦了~
于是反手用Python给他写了一个人脸识别代码把她们的照片全部爬下来自动检测颜值打分排名。
这不比手动快多了
准备工作
开发环境
Python 3.8Pycharm
模块使用
requests pip install requeststqdm pip install tqdm 简单实现进度条效果os 文件操作base64
照片采集部分
流程思路
明确需求: 分析 主播照片 能够去哪里获取到 开发者工具抓包分析图片数据来源 打开开发者工具: F12刷新网页点击 Img 查看图片链接地址通过关键字去搜索图片所对应的数据包 在这个链接里面就有想要图片数据内容 发送请求, 模拟浏览器对于url地址发送请求获取数据, 获取服务器返回响应数据解析数据, 提取我们想要的内容 图片url 和 主播名字保存数据, 把图片数据内容保存本地文件夹里面
代码展示
# 导入数据请求模块
import requests发送请求, 模拟浏览器对于url地址发送请求# 模拟浏览器 headers 请求头 -- 字典数据类型, 构建完整键值对
headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36
}
# 请求链接
url https://www.某牙.com/cache.php?mLiveListdogetLiveListByPagegameId1663tagAll0page2
# 发送请求
# 调用requests模块里面get请求方法, 对于url地址发送请求并且携带上headers请求头伪装, 最后用response变量接受返回数据
response requests.get(urlurl, headersheaders)
# Response [200] 响应对象, 200状态码表示请求成功
print(response)- 获取数据, 获取服务器返回响应数据response.text 获取响应文本数据 字符串数据response.json() 获取响应json字典数据 字典数据- 解析数据, 提取我们想要的内容 图片url 和 主播名字解析数据方法选择, 是根据返回数据内容来的键值对取值 字典取值# for循环遍历提取内容
for index in response.json()[data][datas]:# 照片img index[screenshot]# 名字name index[nick]保存数据content requests.get(urlimg, headersheaders).contentwith open(img\\ name .jpg, modewb) as f:f.write(content)print(name, img)采集到的照片 评分排名部分
对于照片内容进行人脸检测, 颜值评分:
百度云API接口 -- 有现成文档代码通过文档提供代码 先获取 access_token
代码部分
import time
# encoding:utf-8
import requests
import base64
from pprint import pprint
import os
from tqdm import tqdmdef Score(file):# client_id 为官网获取的AK client_secret 为官网获取的SKhost https://aip.某度.com/oauth/2.0/token?grant_typeclient_credentialsclient_id官网获取的AKclient_secret官网获取的SKresponse requests.get(host)access_token response.json()[access_token]人脸检测与属性分析# 读取一下图片数据f open(file, moderb)# 转成 BASE64格式img_base base64.b64encode(f.read())request_url https://aip.某度.com/rest/2.0/face/v3/detectparams {# 传入图片BASE64格式image:img_base,# 指定图片数据类型image_type: BASE64,# 检测类型 检测颜值评分face_field: beauty}request_url request_url ?access_token access_tokenheaders {content-type: application/json}json_data requests.post(request_url, dataparams, headersheaders).json()# KeyError: result 因为识别失败了try:num json_data[result][face_list][0][beauty]# print(颜值分数是:, num)return numexcept:return 识别失败lis []
# 读取文件路径
files os.listdir(img\\)
print(正在颜值检测中, 请稍后......)
for file in tqdm(files):time.sleep(0.5)filename fimg\\{file}# 主播名字name file.split(.)[0]# 评分num Score(filefilename)if num ! 识别失败:dit {主播: name,颜值: num}lis.append(dit)lis.sort(keylambda x:x[颜值], reverseTrue)
page 1
for li in lis:print(f颜值排名第{page}的是{li[主播]}, 颜值评分是{li[颜值]})page 1效果展示 好了文章内容就分享到这里文章不理解的话我还录制了对应的视频讲解和代码一起打包好了。
包括文末这些资料直接名片扫码领取。 备注【LL】快速通过验证