豆瓣电影 Top 250 数据分析

Author Avatar
WincerChan 1月 21, 2018
  • 在其它设备中阅读本文章

前言

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

其实豆瓣对爬虫的防范算是比较高级了,即使伪造了 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)。

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

本文标题: 豆瓣电影 Top 250 数据分析
最后更新:2017 年 12 月 24 日 - 20:12
本文链接:https://blog.itswincer.com/posts/7a8186a0/
本文采用:署名-非商业性使用-禁止演绎 4.0 国际 协议进行许可,阅读 相关说明