IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    豆瓣电影 Top 250 数据分析

    Wincer发表于 2018-01-21 10:24:29
    love 0
    cover

    前言

    前段时间忙于备考,博客有段时间没更新了。其实早就有写这篇博客的想法了,原因嘛——我是比较喜欢看电影的,而且近来也对数据分析颇感兴趣,于是花了一天时间,先是爬取数据,再分析整理,数据可视化。

    其实豆瓣对爬虫的防范算是比较高级了,即使伪造了 Cookie,还是会封禁 IP(还好我的代理 IP 多😏),甚至还会把你的帐号暂时冻结,其实要不是有一些电影词条必须登录才可见,也不用伪造 Cookie 这么麻烦。

    爬取

    之前爬取都是用的正则匹配,这次首次接触了「 Beautiful Soup 」这个库,相见恨晚啊,不多说,先上代码:

    def get_info(url):
        movie = {}
        proxies = {'https': "socks5://127.0.0.1:1080"}
        info = get(url, cookies=read_cookie(), proxies=proxies).text
        soup = BeautifulSoup(info)
        try:
            # get movie name
            name = soup.find(property='v:itemreviewed').get_text()
            movie['name'] = name.split(' ')[0]
    
            # get movie year
            year = soup.find(class_='year').get_text()
            movie['year'] = year[1:-1]
    
            # get movie info
            info = soup.find(id='info').get_text().replace(' ', '').split('\n')
            info = [x for x in info if x is not '']
            for item in info:
                if '导演:' in item:
                    movie['director'] = item[3:].split('/')
                if '主演:' in item:
                    movie['actors'] = item[3:].split('/')
                if '类型:' in item:
                    movie['type'] = item[3:].split('/')
                if '国家/地区:' in item:
                    movie['region'] = item[8:].split('/')
                if '语言:' in item:
                    movie['language'] = item[3:].split('/')
                if '片长:' in item:
                    time = [
                        search(r'[\d]*', x).group() for x in item[3:].split('/')
                    ]
                    movie['time'] = sorted(time, reverse=True)[0]
    
            # get top250 info
            movie['rank'] = soup.find(class_='top250-no').get_text()
    
            movie['number'] = soup.find(property='v:votes').get_text()
    
        except Exception as e:
            print(e)
        return movie

    其中片长取得是无删减版的片长,即不同版本中最长的。

    地区、导演、语言等由于会出现多项内容,采取列表存放。

    以下统计数据截止至 2018/01/20

    导演

    电影导演统计

    其中由「宫崎骏」和「克里斯托弗·诺兰」贡献最多,均为 7 部,具体为:

    宫崎骏(日本):

    • 《千与千寻》,上映年份为「2001」,排名为 No.6
    • 《龙猫》,上映年份为「1988」,排名为 No.17
    • 《天空之城》,上映年份为「1986」,排名为 No.33
    • 《哈尔的移动城堡》,上映年份为「2004」,排名为 No.45
    • 《幽灵公主》,上映年份为「1997」,排名为 No.80
    • 《风之谷》,上映年份为「1984」,排名为 No.106
    • 《魔女宅急便》,上映年份为「1989」,排名为 No.189

    克里斯托弗·诺兰(英国):

    • 《盗梦空间》,上映年份为「2010」,排名为 No.9
    • 《星际穿越》,上映年份为「2014」,排名为 No.25
    • 《蝙蝠侠:黑暗骑士》,上映年份为「2008」,排名为 No.32
    • 《致命魔术》,上映年份为「2006」,排名为 No.61
    • 《记忆碎片》,上映年份为「2000」,排名为 No.132
    • 《蝙蝠侠:黑暗骑士崛起》,上映年份为「2012」,排名为 No.168
    • 《追随》,上映年份为「1998」,排名为 No.170

    演员

    电影演员统计

    其中由「张国荣」贡献最多(前三居然都是香港地区的演员),有 8 部,分别是:

    • 《霸王别姬》,导演为「陈凯歌」,上映年份为「1993」,排名为 No.2
    • 《春光乍泄》,导演为「王家卫」,上映年份为「1997」,排名为 No.77
    • 《射雕英雄传之东成西就》,导演为「刘镇伟」,上映年份为「1993」,排名为 No.88
    • 《倩女幽魂》,导演为「程小东」,上映年份为「1987」,排名为 No.113
    • 《东邪西毒》,导演为「王家卫」,上映年份为「1994」,排名为 No.131
    • 《英雄本色》,导演为「吴宇森」,上映年份为「1986」,排名为 No.140
    • 《纵横四海》,导演为「吴宇森」,上映年份为「1991」,排名为 No.149
    • 《阿飞正传》,导演为「王家卫」,上映年份为「1990」,排名为 No.183

    地区

    电影地区统计

    其中「美国」地区一枝独秀,超过半数以上电影的制片地区均为「美国」,且远超第二名「英国」。

    • 美国:140 部
    • 英国:34 部
    • 日本:32 部
    • 香港:26 部
    • 法国:26 部
    • 德国:20 部
    • 中国大陆:16 部

    片长

    电影片长

    统计名称 数值
    中位数 118.0
    均值 124.0
    众数 98.0(10 次)
    标准差 34.1
    极差 218.0

    其中片长最长的电影为《指环王3:王者无敌》,导演是「彼得·杰克逊」,片长为 263 mins,排名是 No.30。

    其中片长最短的电影为《萤火之森》,导演是「大森贵弘」,片长为 45 mins,排名是 No.150。

    年份

    电影年份

    统计名称 数值
    中位数 2002.0
    均值 1998.6
    众数 2004(13 次)
    标准差 15.6
    极差 85

    其中距今最久远的电影是《城市之光》,导演是「查理·卓别林」,年份为 1931 年,排名是 No.210。

    其中距今最接近的电影有 5 部,均为 2016 年上映:

    • 《疯狂动物城》,导演是「拜伦·霍华德」等,制片国家为「美国」,排名为 No.43
    • 《看不见的客人》,导演是「奥里奥尔·保罗」,制片国家为「西班牙」,排名为 No.83
    • 《摔跤吧!爸爸》,导演是「涅提·蒂瓦里」,制片国家为「印度」,排名为 No.104
    • 《海边的曼彻斯特》,导演是「肯尼思·洛纳根」,制片国家为「美国」,排名为 No.151
    • 《你的名字。》,导演是「新海诚」,制片国家为「日本」,排名为 No.245

    嘿嘿,没想到吧,贡献电影最多的年份并不是「Top 250」前四名中有三部的 1994 年,而是 2004 年。

    评分

    电影评分统计

    统计名称 数值
    中位数 8.70
    均值 8.78
    众数 8.7(44 次)
    标准差 0.27
    极差 1.40

    其中最高分为 9.6 分,为两部电影所获得:

    • 《肖申克的救赎》,导演为「弗兰克·德拉邦特」,评分人数为 952814 人,排名为 No.1
    • 《控方证人》,导演为「比利·怀尔德」,评分人数为 99908 人,排名为 No.41

    其中评分最低的电影为《疯狂的石头》,分数是 8.2 分,导演为「宁浩」,评分人数为 312083 人,排名为 No.230

    可以看出豆瓣在进行「Top 250」排名时,并不是仅看评分,其中评分人数也占了很大的一部分比重,且似乎还有一些其它的因素,比如《血战钢锯岭》这部电影,评分 8.7,评分人数为 310624 人,却并没有上榜,同为评分 8.7,评分人数为 314940 的电影《看不见的客人》排名却早已进前百(No.83)。

    最后,本人并非专业电影人士,无法针对以上数据提出建设性的建议,所做统计也仅仅是出于爱好,也愿自己能在闲暇时间里,多看几部电影。



沪ICP备19023445号-2号
友情链接