前言
晚上回家闲来无事,想打开某直播平台,看看小姐姐直播。看着一个个多才多艺的小姐姐,眼花缭乱,好难抉择。究竟看哪个小姐姐直播好呢?
今天我们就一起来做个颜值评分器,爬取小姐姐们的直播照片,对每位小姐姐的颜值进行打分排序,选出最靓的star。
一、核心功能设计
总体来说,我们需要做的是获取直播颜值区的主播小姐姐的正在直播的全部主播名称和封面图并保存下来,用百度AI提供的人脸识别接口,进行颜值评分排序,选出颜值最高的。
拆解需求,大致可以整理出核心功能如下:
-
获取主播直播封面图
- 打开直播颜值区模块对页面进行分析
- 发送网络请求,解析数据
- 保存数据
-
主播颜值评分
- 百度人脸识别接口
- 遍历主播照片,调用颜值检测接口对主播颜值进行打分
- 对评分进行排序
二、实现步骤
1. 获取主播名称和照片
首先我们选择的是某牙直播,进入首页打开颜值区,按F12可以进入开发者模式。
import requests
# 1.找到数据所在url地址(系统分析网页性质)
url = "https://www.huya.com/g/2168"
headers = {
'User-Agent': 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 '
'(KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'
}
# 2. 发送网络请求
response = requests.get(url=url, headers=headers)
html_data = response.text
print(html_data)
不难发现所有的小姐姐直播封面对应的都是在li标签里面。我们只要解析获取这些li标签数据就可以了。
接着我们需要拿到直播小姐姐的封面图片,通过分析上面li标签里面的内容,可以发现下面有个a标签,里面的img标签中的data-original不就是我们要的小姐姐图片嘛!
接下来我们想要获取主播小姐姐的名字怎么办呢?点开li标签继续分析,可以看到下面有个span标签,其中的i标签内容就是小姐姐直播的名字。
网页结构我们上面已经分析好了,那么我们就可以来动手爬取我们所需要的数据了。获取到所有的数据资源之后,把图片保存下来即可。文件的下载保存的方式比较多,我用的是通过 with open打开文件的方式 ,比较简单。
# 3. 数据解析
selector = parsel.Selector(html_data)
lis = selector.xpath('//li[@class="game-live-item"]') # 所有li标签
for li in lis:
img_name = li