查看原文
其他

奥斯卡,究竟谁一直在陪跑。

小F 法纳斯特 2019-03-31

就在这礼拜,第91届奥斯卡金像奖落下了帷幕。


说实话,我对奥斯卡并不感冒。


之所以写这期内容,应该是因为莱昂纳多·迪卡普里奥,俗称「小李子」。



「小李子」在2016年,凭借着《荒野猎人》获得了第88届奥斯卡最佳男主角。


结束了自己陪跑奥斯卡22年的旅程。


这里有必要解释一下。


「小李子」并没有年年都入选奥斯卡的提名。


算起来应该共有5次提名,其中1次成功。


之所以是22年,是因为在1993年时候,他就获得了第66届奥斯卡最佳男配角的提名。


直到2016年才成功拿到小金人,这期间一共历时22年。


本次通过爬取历届的奥斯卡最佳男主角、男配角、女主角、女配角信息。


来看看谁才是当之无愧的陪跑王。


即经常被提名,但是从未获奖的演员。



/ 01 / 网页分析


奥斯卡的相关数据获取,来源于Mtime时光网。


网站没反爬,所以可以轻松获取到数据。



这里以最佳男主角为例,获取时间、获奖者及提名者。


通过一个循环,将最佳男主角、男配角、女主角、女配角信息拿到手。



/ 02 / 数据获取


时间、获奖者及提名者信息获取代码如下。


import time
import requests
from bs4 import BeautifulSoup

filenames = ['Best_Actor_LR.csv', 'Best_Actress_LR.csv', 'Best_Actor_SR.csv', 'Best_Actress_SR.csv']


def get_message(num1, num2):
    """获取数据"""
    time.sleep(5)
    years, wins, nominations = [[], [], []]
    # 请求网址
    url = 'http://award.mtime.com/3/award/3' + str(num1) + '/index' + str(num2) + '.html'
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}
    response = requests.get(url=url, headers=headers)
    html = response.text
    # 对请求结果进行编码解码处理,避免出现乱码
    html = html.encode('ISO-8859-1')
    html = html.decode('utf-8')
    # 提取信息
    soup = BeautifulSoup(html, 'html.parser')
    div = soup.find_all(class_='event_awards event_list')
    # 获取时间信息
    for dt in div[0].find_all('dt'):
        if len(dt) == 1:
            year = dt.get_text().replace('\n', '').strip()
            years.append(year)
    # 获取获奖者信息
    for dd in soup.find_all(class_='yellowbox'):
        win = dd.find(class_='px14 c_a5').find('a').get_text().split(' ')[0]
        wins.append(win)
    # 获取提名者信息
    for dd in soup.find_all(class_='bluebox'):
        names = []
        for k in dd.find_all(class_='px14 c_a5'):
            name = k.get_text().strip().split(' ')[0]
            names.append(name)
        # 提名者有多个,拼接提名者信息
        nomination = ' '.join(names)
        nominations.append(nomination)
    # 写入CSV文件中
    for year, win, nomination in zip(years, wins, nominations):
        print(year, win, nomination)
        filename = filenames[num1]
        with open(filename, 'a+') as f:
            f.write(year + ',' + win + ',' + nomination + '\n')
        f.close()


if __name__ == '__main__':
    for i in range(4):
        num1 = i
        for j in range(1, 10):
            if j == 1:
                num2 = ''
            else:
                num2 = -j
            get_message(num1, num2)


最后成功获取到数据。



这里发现网站上少了2008、2009年的数据。


所以需要手动添加,注意一下。



/ 03 / 数据可视化


01 最佳男主角



丹尼尔·戴-刘易斯是目前仅有的一位,三度问鼎奥斯卡最佳男主角的男演员。


那么他的三部获奖作品是哪些呢?


1990年的《我的左脚》,2008年的《血色将至》,2013年的《林肯》。


尴尬了,都没看过...


好像听说过《林肯》...


奥斯卡小金人总体上是偏向于艺术电影的。


所以那些个商业电影,获奖的寥寥无几。


今年《黑豹》的提名就天天被调侃,俗称「瓦坎达农村保卫战」...



陪跑者一目了然。


一位是彼德·奥图,另一位则是理查德·伯顿。


原来「小李子」并不是最惨的。


02 最佳女主角



凯瑟琳·赫本「一马当先」。


她的四部获奖作品如下。


1934年的《清晨的荣誉》,1967年的《猜猜谁来吃晚餐》,1968年的《冬狮》,1982年的《金色池塘》。


同上,都没有看过...



最佳女主角陪跑者有三位。


分别是黛博拉·蔻儿,朱迪·丹奇,艾琳·邓恩。


看过007系列电影的,对朱迪·丹奇应该会有些印象。


因为她曾在其中,扮演了邦德的上司,M夫人。



03 最佳男配角



第一名和男主角的情况类似,都是三次获奖。


只不过沃尔特·布伦南获奖时间都是在奥斯卡金像奖的初期。


即第9、11、13届获奖。



男配角陪跑的就有点多了...


「小李子」的第一次提名, 就是最佳男配角提名。


04 女配角



黛安娜·维斯特和谢丽·温特斯并列第一。



和男配角的情况相似,陪跑者也不少。


05 男演员



为什么又把所有的信息汇总了呢。


主要是因为观察到,「小李子」在男配角也有提名。


那么难免会出现,两边都有获奖的情况出现。


比如这里的杰克·尼科尔森,《蝙蝠侠》中小丑的饰演者。


他就获得了两个最佳男主角和一个最佳男配角奖项。



陪跑者和最佳男主角的一模一样。


一位彼德·奥图,一位理查德·伯顿。


06 女演员



发现梅丽尔·斯特里普一共获得了21次提名。


这应该是目前奥斯卡获得提名最多的演员了。



/ 04 / 总结


那么谁是当之无愧的陪跑王呢?


答案便是「彼德·奥图」,8次提名,0次获奖。


虽然「彼德·奥图」在男演员这方面没有获奖。


在2003年的时候,还是收获了奥斯卡的终身成就奖。


奥斯卡提名一直作为演员演技的一种殊荣。


哪怕是没有获奖,能够有提名也是一种很大的荣耀。


文章源码及相关文件已上传「GitHub」。


点击左下角阅读原文,即可获取。


万水千山总是情,点个「好看」行不行。



推荐阅读




···  END  ···




支持小F原创  

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存