本文最近一次更新于 6 年 11 个月前,其中的内容很可能已经有所发展或是发生改变。
前言
前段时间忙于备考,博客有段时间没更新了。其实早就有写这篇博客的想法了,原因嘛——我是比较喜欢看电影的,而且近来也对数据分析颇感兴趣,于是花了一天时间,先是爬取数据,再分析整理,数据可视化。
其实豆瓣对爬虫的防范算是比较高级了,即使伪造了 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)。
最后,本人并非专业电影人士,无法针对以上数据提出建设性的建议,所做统计也仅仅是出于爱好,也愿自己能在闲暇时间里,多看几部电影。