python爬虫看看虎牙女主播中谁最“顶”步骤详解
作者:萌萌哒的瓤瓤 发布时间:2022-03-31 09:30:33
网页链接:https://www.huya.com/g/4079
这里的主要步骤其实还是和我们之前分析的一样,如下图所示:
这里再简单带大家看一下就行,重点是我们的第二部分。
既然网页结构我们已经分析完了,那么我还是选择用之前的xpath来爬取我们所需要的资源。
# 获取所有的主播信息
def getDatas(html):
datalist=[]
parse=parsel.Selector(html)
lis=parse.xpath('//li[@class="game-live-item"]').getall()
# print(lis)
for li in lis:
data = []
parse1=parsel.Selector(li)
img_src=parse1.xpath('//img[@class="pic"]/@data-original').get("data")
data.append(img_src)
title=parse1.xpath('//i[@class="nick"]/@title').get("data")
data.append(title)
redu=parse1.xpath('//i[@class="js-num"]/text()').get("data")
data.append(redu)
datalist.append(data)
return datalist
这样我们就能获取到我们所需要的所有资源,之后将图片保存下来即可。这其中有两种文件的下载方式,一种是通过 with open打开文件的方式 ,另外一种就是通过 urllib.request.urlretrieve(data,path) 的方法,网上说第二种方式的下载速度会相对快一点,并且第二种有点 set 集合的意思,可以自动进行 去重 的操作,下载的文件夹中没有该文件就下载,否则就跳过。
#保存主播头像
def download(datalist):
for data in datalist:
#第一种下载方式
with open("D:/software/python/python爬虫/虎牙颜值主播排名/", 'wb') as f:
f.write(data[0])
#第二种下载方式
urllib.request.urlretrieve(data[0],"D:/software/python/python爬虫/虎牙颜值主播排名"+"/"+data[1]+".jpg")
print(data[1]+"下载完成")
百度人脸识别接口
百度AI开放平台链接:https://ai.baidu.com/
输入相应的应用名称以及简介即可。
这样我们的应用就算创建完毕了。选中的部分也是我们接下来会用到的。
之后我们先去看一下sdk文件
看使用说明即可,不用着急下载,之后我们直接在pycharm中安装模块就行。
之后我们来看一下简单的操作流程首先先创建客户端:
之后我们就是调用接口解析图片,因为我们需要返回颜值分数这一个参数,所以还需要带参数进行请求,否则无法将分数信息返回给我们。如下图:
这样我们颜值检测的接口流程基本就已经理清楚了,代码如下:
def face_rg(file_path):
""" 你的 APPID AK SK """
APP_ID = '你的 App ID'
API_KEY = '你的 Api Key'
SECRET_KEY = '你的 Secret Key'
client = AipFace(APP_ID, API_KEY, SECRET_KEY)
with open(file_path,'rb')as file:
data=base64.b64encode(file.read())
image=data.decode()
imageType = "BASE64"
""" 如果有可选参数 """
options = {}
options["face_field"] = "beauty"
""" 带参数调用人脸检测 """
result=client.detect(image, imageType, options)
# print(result)
return result['result']['face_list'][0]['beauty']
之后我们就只需要编写一个遍历文件夹下面的图片进行检测,之后将整个信息按照颜值分数进行降序排列:
path=r"D:\software\python\python爬虫\虎牙颜值主播排名"
image_list=os.listdir(path)
name_score={}
for image in image_list:
try:
print(image.split(".")[0]+"颜值评分为:%d"%face_rg(path+"/"+image))
name_score[image.split(".")[0]]=face_rg(path+"/"+image)
except:
pass
second_score=sorted(name_score.items(),key=lambda x:x[1],reverse=True)
print("-------------------------------------检测结束-------------------------------------")
print("-------------------------------------以下是排名-------------------------------------")
for a,b in enumerate(second_score):
print("{}的颜值评分为:{},排名第{}".format(second_score[a][0],second_score[a][1],a+1))
这里博主测完自己的颜值是 52分,连及格线都没到 ,大家也可以在评论区说说自己的分数。
效果演示
来源:https://blog.csdn.net/lovely__RR/article/details/108179028
猜你喜欢
- 最近在学习Golang语言,中间遇到一个前辈指点,有一个学习原则:Learning By Doing。跟我之前学习Java的经验高度契合。在
- javascript/js的ajax的GET请求:<script type="text/javascript"&g
- 一、前言前几天在Python最强王者群有个叫【dcpeng】的粉丝问了一个关于Pandas中的问题,这里拿出来给大家分享下,一起学习。想问一
- 1.问题复现:有时候我们去点击.py文件 文件里明明有打印信息,却一闪而过,没有任何显示比如以下内容#!/usr/local/bin/pyt
- 这篇文章主要介绍了python匿名函数lambda原理及实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值
- 是不是很烦每次注册网站或填写相关资料时都要重来一遍?其实会有很多自动填写工具能代劳。比如使用 Mac, 在 Safari 的表单中,它可以足
- 大家应该经常看到在文本框里提示文字,然后一点就没了。通常做法都是默认给个value,通过js来处理。详细实现都不介绍了,大家都会。现在来看一
- 在找工作的时候,我们会选择上网查询招聘的信息,或者是通过一些招聘会进行现场面试。但由于信息更新不及时,有一些岗位会出现下架的情况,如果我们不
- 不知不觉,玩爬虫玩了一个多月了。我愈发觉得,爬虫其实并不是什么特别高深的技术,它的价值不在于你使用了什么特别牛的框架,用了多么了不起的技术,
- lambda 语法lambda 函数的语法只包含一个语句,表现形式如下:lambda [arg1 [,arg2,.....argn]]:ex
- 在数据处理过程中比如从CSV文件中导入数据data_df = pd.read_csv("names.csv")在处理之前
- 本实例使用的mysql版本为mysql-8.0.15-winx641、下载zip包官网地址:https://dev.mysql.com/do
- 什么是冗余字段?在设计数据库时,某一字段属于一个表,但它又同时出现在另一个或多个表,且完全等同于它在其本来所属表的意义表示,那么这个字段就是
- 当我们利用html代码制作网页时,可以用以下方法进行python代码的调用:1.简单的python代码例如输出‘hell
- 写在前面QQ群里偶然看到群友问这个问题, pandas读取大文件时怎么才能获取进度? 我第一反应是: 除非pandas的read_excel
- easy_install 卸载通过easy_install 安装的模块可以直接通过 easy_install -m Packag
- PHP attributes() 函数实例返回 XML 的 body 元素的属性和值:<?php $note=<<<
- 1 squeeze(): 去除size为1的维度,包括行和列。至于维度大于等于2时,squeeze()不起作用。行、例:>>&g
- 我们知道Vscode是一款强大的编辑器,我们可以通过商城里面的插件扩展来写C/C++/python/java等。同样Vscode支持SQL语
- 实际上在python中用列表就可以实现动态变量名的管理,python中的列表中可以存储任何类型的元素:listA = [0,"st