创造101的小姐姐,了解一下?

在女票的影响下开始看咱们厂自制的综艺节目《创造101》,被里面充满才华和颜值的小姐姐们所吸引。在大饱眼福的同时,不仅萌生了深入了解小姐姐的想法,通过爬虫和数据分析,为大家揭开更多小秘密。

  • 技术栈:Python、MongoDB、PHP
  • 可视化:Echarts

0x1 思路

简单来说,通过爬官方的 选手榜 得到了 101 位小姐姐们的基础数据,如名字、照片、排名:

创造101的小姐姐,了解一下?

然后通过每个选手的 详情页 得到更详细的信息:星座、身高、体重、出生地、粉丝数等:

创造101的小姐姐,了解一下?

使用 Python 爬取数据并做简单的清洗,得到了一份格式化的数据,最后保存在 MongoDB 中:

if __name__ == “__main__”:
 content = dataRequest(“http://v.qq.com/biu/101_star_web”)
 clist = content.select(‘.mod_pic_list .pic_list .list_item’)for item in clist:
 dataitem = {}
 dataitem[‘avatar’] = ‘http:’+item.select(‘.pic img’)[0][‘src’]
 dataitem[‘link’] = ‘http:’+item.select(‘.tit’)[0].attrs[‘href’]
 dataitem[‘rank’] = item.select(‘.rank_num .num’)[0].text
 dataitem[‘name’] = item.select(‘.tit’)[0].text
 print(dataitem[‘name’])detail = dataRequest(dataitem[‘link’]+‘&tabid=2’)
 dataitem[‘follower’] = detail.select(‘.star_followers #_banner_fanscount’)[0].attrs[‘data-num’]
 dataitem[‘pic’] = ‘http:’+detail.select(‘.star_pic img’)[0].attrs[‘src’]
 wiki = detail.select(‘.mod_row_box #infoWrapper’)[0]
 wikicnt = wiki.select(‘.wiki_content’)[0].text
 wikilist = wiki.select(‘.wiki_info .wiki_info_1 .line, .wiki_info .wiki_info_2 .line’)wikiobj = WikiObj()for item in wikilist:
 key = re.sub(‘\s‘, ”, item.select(‘.lable’)[0].text)
 value = item.select(‘.content’)[0].text
 setattr(wikiobj, key, value)dataitem[‘weight’] = wikiobj.体重
 dataitem[‘birthplace’] = wikiobj.出生地
 dataitem[‘birthdate’] = wikiobj.出生日期
 dataitem[‘alias’] = wikiobj.别名
 dataitem[‘location’] = wikiobj.地区
 dataitem[‘constellation’] = wikiobj.星座
 dataitem[‘nation’] = wikiobj.民族
 dataitem[‘hobby’] = wikiobj.爱好
 dataitem[‘occupation’] = wikiobj.职业
 dataitem[‘blood’] = wikiobj.血型
 dataitem[‘height’] = wikiobj.身高
 dataitem[‘achievement’] = wikiobj.主要成就.strip()
 dataitem[‘works’] = wikiobj.代表作品
collection.update_one({‘name’: dataitem[‘name’]}, {“$set”: dataitem}, True)

格式化后的数据是这样的:

{
 “_id” : ObjectId(“5afcf8e4dcc481f9bc268ff4”),
 “avatar” : “http://puui.qpic.cn/media_img/0/null1524465886/0”,
 “link” : “http://v.qq.com/doki/star?id=1503935”,
 “rank” : 1,
 “name” : “吴宣仪”,
 “follower” : “1238880”,
 “weight” : “45kg”,
 “birthplace” : “中国海南省”,
 “birthdate” : “1995年01月26日”,
 “alias” : “宣仪”,
 “location” : “内地”,
 “constellation” : “水瓶座”,
 “nation” : “-“,
 “hobby” : “-“,
 “occupation” : “歌手”,
 “blood” : “O型”,
 “height” : 166,
 “achievement” : “2016年2月25日,荣获”最具潜力组合奖“。”,
 “works” : “创造101、闺蜜的完美旅行、创造101悠享版、101进阶练习室、101宿舍日记”,
 “pic” : “http://puui.qpic.cn/media_img/0/null1524119204/0”
 }

在前端通过 PHP API 接口读取数据后发现问题,出生日期数据并不是非常全:

创造101的小姐姐,了解一下?

度百科里找到了一份包含了出生日期和经纪公司的表:

创造101的小姐姐,了解一下?

话不多说,继续爬,将数据追加到数据库里:

# 百度百科
 baidu = dataRequest(“https://baike.baidu.com/item/%E5%88%9B%E9%80%A0101/22435864”)
 table = baidu.select(‘table’)[3].select(‘tr’)# …for td in table[1:]:
 name = td.select(‘td:nth-of-type(1)’)[0].text
 if name == dataitem[‘name’]:
 dataitem[‘birthdate’] = dataitem[‘birthdate’] if dataitem[‘birthdate’] != ‘-‘ else td.select(‘td:nth-of-type(3)’)[0].text
 dataitem[‘company’] = td.select(‘td:nth-of-type(4)’)[0].textif dataitem[‘birthdate’] == ‘-‘ or dataitem[‘birthdate’] == ‘—-‘:
 dataitem[‘age’] = ‘-‘
 else:
 now = datetime.datetime.now()
 dataitem[‘age’] = now.year – int(dataitem[‘birthdate’].split(‘年’)[0])

最终完整数据呈现是这样的(段奥娟的年龄这么神秘?):

创造101的小姐姐,了解一下?

0x2 数据分析

有了这批原始数据后,就可以开始做一些数据筛分和分析了,选了几个纬度:年龄、星座、身高、经纪公司、颜值来进一步挖掘。

1. 年龄分布

听说这次的选手都很小,但有多小还真不知道,把年龄划分几个阶段:0~16、17~20、21~24、25~28、29~35,通过数据库条件筛选看看都是如何分布的:

创造101的小姐姐,了解一下?
创造101的小姐姐,了解一下?

可见 17~24 岁已经占了 78% 了,最小 16 岁(2002年出生,而且还有四位!),最大 28 岁。至于 29~35 岁,不好意思不存在的。当然仔细看看,排名靠前的都是岁数相对较大的 90 后,同为 90 后,这也算是作一点安慰吧?

2. 星座分布

有人说冬天出生的孩子比较聪明,这次晋级的小姐姐们能否体现这个规律?当然我知道这个比赛不是拼智商的。通过数据分析可以得出:选手们的星座分布得比较均匀,射手座最少天秤座最多,不懂星座只能解读到这里了。

创造101的小姐姐,了解一下?

对了,58 名晋级选手里也是天秤最多,射手全军覆没:

创造101的小姐姐,了解一下?

3. 身高分布

第三集的时候对李紫婷这组的《红色高跟鞋》印象很深刻,这个组里面个个都是人才,说话又好听,唱功还很好(吴印香我在中国好声音的时候已经关注了),而且都是大长腿。那这群小姐姐们平均都有多高?

创造101的小姐姐,了解一下?

选定三个区间:150~160cm、160~170cm、170~180cm 进行统计:

创造101的小姐姐,了解一下?

女团似乎 160~170cm 会比较吃香(前五名齐刷刷出现在了一起),180cm 的热依娜跳起舞来可真不容易。数据也表明确实大部分选手身高都集中在 160~170cm 这个区间了:

创造101的小姐姐,了解一下?

4. 经济公司排名

像这种女团比赛,拼的也是背景。谁家的公司资源多,谁就可以发展得更好。先看看哪家经纪公司派出的选手最多:

创造101的小姐姐,了解一下?

乐华娱乐是韩庚、周笔畅、王嘉宁的经纪公司,而王思聪旗下的香蕉娱乐排在第五,旗下的强东玥还是很有实力的。

再看看晋级的选手里,哪家经济公司占比较大(吴宣仪、山支哥两位是我比较熟悉的,她们的排名也在前五,乐华娱乐能否笑到最后?):

创造101的小姐姐,了解一下?

5. 男性女性的眼中,谁的颜值最高?

女团颜值也是一大吸引点,不过颜值本身就不好判断,既然人的评价太过主观,那就让机器来评价吧。这里我用的是 Face++ 的接口,这家公司为国内很多大公司的 App 提供了底层技术支持,其中有一个颜值检测的能力(说是代表了亚洲男性和女性对人脸评价的平均水平):

创造101的小姐姐,了解一下?
创造101的小姐姐,了解一下?

调用的过程大致是这样的(注意不要请求太频繁,加一些延时):

let params ={
 api_key:‘xxx’,
 api_secret:‘xxx’,
 image_url: avatar,
 return_attributes:‘beauty’
}
this.$http.post(“https://api-cn.faceplusplus.com/facepp/v3/detect”, qs.stringify(params))
 .then((response)=>{
 let beauty = response.data.faces[0].attributes.beauty
this.newSisterList[index].beauty= beauty
})
 .catch(function(error){
 console.log(error);
})

下面看看男性眼中颜值最高的小姐姐排名:

创造101的小姐姐,了解一下?

再看看女性眼中颜值最高的小姐姐排名:

创造101的小姐姐,了解一下?

你们觉得准不准?还有前20名去哪儿了?难不成他们已经脱离了亚洲人的审美?「丑丑」又为何频频出现在颜值榜里?请跟我一起走进 —— 笑笑就好,认真就输了。

0x3 最后

本次分析纯粹源于个人爱好,结果不含恶意。谢谢腾讯视频提供优质的综艺节目。

转载作品,来源于腾讯 Deep Ocean,如需商业用途或转载请与 腾讯 Deep Ocean 联系。

小程序码
  • 技术宅微信
  • 联系我们
    • 电话:025-66045436合作
    • 官方小程序 技术宅小程序
      官方微信 技术宅微信