社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

用 Python 给全球女神颜值排个序

Python绿色通道 • 4 年前 • 569 次点击  

↑ 关注 + 星标 ,每天学Python新技能




    

后台回复【大礼包】送你Python自学大礼包

来源 | 数据森麟

前言
朋友们,今天我们聊聊“女神大会”,作为一个钢铁直男,我打算用Python给全球女神颜值排个序,看看有没有你喜欢的种子选手~


数据来源


目前女神大会更新至了第90期,总共出场了90位女神,界面如下:



我们通过fiddler获取该界面中女神的照片地址以及每一篇文章的id编号,用于之后的爬取和可视化,代码如下:


import json
import requests
from bs4 import BeautifulSoup
import pandas as pd
import re
import os
os.chdir('D:/爬虫/女神')

id_list = []
title_list = []
pic_list = []
date_list=[]

for i in range(1,6):
   url= 'http://api.dongqiudi.com/search?keywords=%E5%A5%B3%E7%A5%9E%E5%A4%A7%E4%BC%9A&type=all&page='+str(i)
   html = requests.get(url=url).content
   news = json.loads(html.decode('utf-8'))['news']
   this_id = [k['id'for k in news]
   this_pic = [k['thumb'for k in news]
   this_title = [k['title'for k in news]
   this_date = [k['pubdate'for k in news]
   this_title=[BeautifulSoup(k,"html.parser").text for k in this_title]
   id_list = id_list+this_id
   title_list = title_list+this_title
   pic_list = pic_list+this_pic
   date_list = date_list+this_date


另一方面,每位女神的评分都在下一期当中,我们需要爬取文章内容进行获取。
爬取代码如下:


prev_title_list = []
score_list=[]
count_list=[]
for id in id_list:
   url = 'http://www.dongqiudi.com/archive/{k}.html'.format(k=id)    
   header = {'User-Agent''Mozilla/5.0 (Windows NT 10.0; Win32; x32; rv:54.0) Gecko/20100101 Firefox/54.0',
   'Connection''keep-alive'}
   cookies ='v=3; iuuid=1A6E888B4A4B29B16FBA1299108DBE9CDCB327A9713C232B36E4DB4FF222CF03; webp=true; ci=1%2C%E5%8C%97%E4%BA%AC; __guid=26581345.3954606544145667000.1530879049181.8303; _lxsdk_cuid=1646f808301c8-0a4e19f5421593-5d4e211f-100200-1646f808302c8; _lxsdk=1A6E888B4A4B29B16FBA1299108DBE9CDCB327A9713C232B36E4DB4FF222CF03; monitor_count=1; _lxsdk_s=16472ee89ec-de2-f91-ed0%7C%7C5; __mta=189118996.1530879050545.1530936763555.1530937843742.18'
   cookie = {}
   for line in cookies.split(';'):
       name, value = cookies.strip().split('='1)
       cookie[name] = value    
   html = requests.get(url,cookies=cookie, headers=header).content
   try:
       content = BeautifulSoup(html.decode('utf-8'),"html.parser")
       score = content.find('span',attrs={'style':"color:#ff0000"}).text
       prev_title = content.find('a',attrs={"target""_self"}).text
       prev_title_list.append(prev_title)
       score_list.append(score)
       sentence = content.text.split(',')
       count=[k for k in sentence if re.search('截至目前',str(k))][0]
       count_list.append(count)
   except:
       continue


整体对比


我们此次利用R语言中的ggimage包,将获取到的女神图片加入到最终的图表中,提高可视化效果,首先看一下整体评分的TOP15名单:



朱茵、林志玲、高圆圆位居榜单前三位,不知道这份榜单是否符合你心目中的女神标准,而这三位也恰好成为了目前出场的90位女星当中香港、台湾、大陆的最高分。值得一提的是,懂球帝小编对于活跃于90年代的香港女星情有独钟,从中选取了非常多的女神,而这些女神的评分也都名列前茅。


下面看一下目前出场的90位女神中,排名相对靠后的几位:



很多朋友会觉得这份榜单对于年轻女神有些苛刻,可能这也代表了广大网友对于各位年轻女神的美好期许,体现了她们未来的无限可能。

公众号后台回复“女神”可以获取本文代码地址。


区域对比


我们分区域看一下目前各个区域排名前十的名单:





看完了各个区域TOP10的名单之后,我们进行一下区域的对比:



我们将小提琴图与盒形图相结合,进行区域的对比,可以看到大陆女星的评分相对偏低,一方面是由于部分女神的评分较低,拉低了整体的分值,另一方面也是由于目前出场的大陆女星年龄普遍偏小,而这一点也会在下一部分得到证实


年份对比


我们看一下各个年份出生的女星总体评分情况对比,其中“60后”选项也包含了60前的女神,“90后”选项也包含了00后的女神



可以看到60后、70后的女神们平均分数要高于80后,而80后显著高于90后,一方面说明了大家对老牌女神们的认可,另一方面也是体现了大家对新生女神们的无限期许。


我们下面将区域与年份综合起来进行对比:



可以看到参与评分的大陆女神普遍比较年轻,这也一定程度解释了此前提到的大陆女神整体评分偏低的原因。而港台女神普遍集中在60、70后,这些女神们活跃的90年代也是香港电影、电视的黄金时期,我们也期待着香港影视未来的复苏.

Python自学超级硬核资料


最后送大家一份Python学习大礼包,从Python基础,爬虫,数据分析Web开发等全套资料,吃透资料,你可以扔掉其他资料,这些资料都是视频,学起来非常友好 


Ps:都是视频学习资料,非常适合基础不好或者零基础的同学





    

推荐阅读

  1. 微软这个太强了

  2. 某大学副教授+副处级,工资7300/月,被老婆天天骂窝囊废…

  3. 为什么程序员下班后只关显示器从不关电脑?




    


推荐一个公众号,帮助程序员自学与成长


觉得还不错就给我一个小小的鼓励吧!









Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/119817