用Python分析“女神大會”,碼農很想娶的女星竟然是......
筆者作為一位喜愛足球的球迷,“懂球帝”一定會是款必不可少的 App,即使是只有 16G 的空間,也從未將其卸載。
然而我們今天聊的與足球無關,而是去聊懂球帝上的“女神大會”專欄,作為一個大型“鋼鐵直男”聚集地,“懂球帝”上對各位女神的評分,對廣大“鋼鐵直男”群體也具有一定代表性。
數據來源
目前女神大會更新至了第 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 包,將獲取到的女神圖片加入到最終的圖表中,提高可視化效果。
首先看一下整體評分的 ***5 名單:
朱茵、林志玲、高圓圓位居榜單前三位,不知道這份榜單是否符合你心目中的女神標準,而這三位也恰好成為了目前出場的 90 位女星當中香港、臺灣、大陸的***分。
值得一提的是,懂球帝小編對于活躍于 90 年代的香港女星情有獨鐘,從中選取了非常多的女神,而這些女神的評分也都名列前茅。
下面看一下目前出場的 90 位女神中,排名相對靠后的幾位:
很多朋友會覺得這份榜單對于年輕女神有些苛刻,可能這也代表了廣大網友對于各位年輕女神的美好期許,體現了她們未來的***可能。
區域對比
我們分區域看一下目前各個區域排名前十的名單:
看完了各個區域 ***0 的名單之后,我們進行一下區域的對比:
我們將小提琴圖與盒形圖相結合,進行區域的對比,可以看到大陸女星的評分相對偏低。
一方面是由于部分女神的評分較低,拉低了整體的分值;另一方面也是由于目前出場的大陸女星年齡普遍偏小,而這一點也會在下一部分得到證實
年份對比
我們看一下各個年份出生的女星總體評分情況對比,其中“60 后”選項也包含了 60 前的女神,“90 后”選項也包含了 00 后的女神:
可以看到 60 后、70 后的女神們平均分數要高于 80 后,而 80 后顯著高于 90 后。
一方面說明了大家對老牌女神們的認可;另一方面也是體現了大家對新生女神們的***期許。
我們下面將區域與年份綜合起來進行對比:
可以看到參與評分的大陸女神普遍比較年輕,這也一定程度解釋了此前提到的大陸女神整體評分偏低的原因。
而港臺女神普遍集中在 60、70 后,這些女神們活躍的 90 年代也是香港電影、電視的黃金時期,我們也期待著香港影視未來的復蘇。
后記
懂球帝目前的女神大會做到了 90 期,并沒有十分完整地囊括廣大女神,比如“四旦雙冰”就都沒有出現,使得這次的數據并不能完全地表述廣大“鋼鐵直男”心中的女神標準,未來隨著期數的增加,相信會有更加完善的分析。
***,小編突發奇想,想要看下在一周中不同時間出場的女神評分是否會有區別:
出乎小編意料的是,在小編一周中最開心的三天周四(即將放假),周五(迎接放假),周六(享受放假)的三天中出場的女神評分反而偏低,或許是由于數據量偏少,未來隨著期數的增加,小編也會密切關注這點。
作者:徐麟
簡介:目前就職于互聯網公司數據部,哥大統計數據狗,從事數據挖掘&分析工作,喜歡用 R&Python 玩一些不一樣的數據。