python爬取百部电影数据,我分析出了一个残酷的真相

454次阅读
没有评论

2019年就这么匆匆过去了,就在前几天国家电影局发布了2019年中国电影市场数据,数据显示去年总票房为642.66亿元,同比增长5.4%;国产电影总票房411.75亿元,同比增长8.65%,市场占比 64.07%;城市院线观影人次17.27亿,同比增长0.64%。

看上去似乎是一片大好对不对?不过作为一名严谨求实的数据分析师,我从官方数据中看出了一点端倪:国产票房增幅都已经高达8.65%了,为什么观影人次增长不足1%?

到底为什么会出现这样的现象,最好的办法就是从数据中找答案。我们说干就干,按照老规矩,先用python爬取数据、再用BI进行数据分析,最终事情的真相就会显现在我们面前。

一、分析目的和分析指标

首先明确我们数据分析的目的,根据2019年电影的数据分析国内电影市场,主要是为了找到票房与观影人次的关系。

怎么去衡量一部电影的好坏呢?懂电影的人应该都知道这么几个指标:“电影票房”、“票房占比”、“上座率”、“排片比”、“评分”等等,其中我们的数据源就用猫眼电影吧,但是因为猫眼评分门槛很低,可能充斥着很多水军,所以这次就不用“评分”这个指标了。

python爬取百部电影数据,我分析出了一个残酷的真相

 

二、python爬取

下面就要开始爬取数据了,因为猫眼电影的网页结构比较简单,爬取操作比较简单,所以这里我就不详细展示了,只说几步需要注意的地方就行。

注:源代码可以在后台私信回复我 “电影” 获得!

1、先看看结构

从猫眼电影上可以看到我们要爬取的网页,首先要提取出这个网页的信息,在了解了大体的情况之后,就右键选择查看网页的源代码,看一下我们需要爬取的数据信息在源代码中的什么地方。

 

python爬取百部电影数据,我分析出了一个残酷的真相

 

2、伪装成浏览器进行数据请求

这个方法就是老生常谈的事情了,这里不细讲了,在发送请求前加上headers参数即可。

python爬取百部电影数据,我分析出了一个残酷的真相

 

3、提取数据

猫眼里的电影票房等都是加密后的字体,因此我们需要解密字体。虽然字符的编码是变化的,但是对象是不变的。那么我们可以通过第一次下载一个字体文件origin.ttf,并把对应编码的字体写出来,当第二次从网上重新下载一个字体文件online_base64.ttf 的时候,可以对比对象信息,如果对象是一样的,那么就把第一次编码对应的文字赋值给第二次的编码,这样即可。

python爬取百部电影数据,我分析出了一个残酷的真相

 

4、主程序调用保存在excel中

首先需要建立一个空列表,将所有的数据添加到里面去。在之前的提取数据那个函数的时候,将print(data),改写成yield data,将所有的数据添加到一个列表之后就可以保存数据了。

python爬取百部电影数据,我分析出了一个残酷的真相

 

5、需要注意的地方

  • 下载一个基本字体路径,找到它对应的数字及其编码
  • 每一次爬取网页时,都要先下载该网页的字体文件,然后与基本字体文件作对比,获得爬取网页的数字对应编码。

三、BI分析

有了源文件,我们就可以进行BI分析了,至于为什么不用python是因为比较麻烦,像我们如果要做二八分析模型,代码写起来还是比较麻烦的,日常共工作中不太能满足需求。

所以一般来说我现在都是用专业的BI工具进行数据分析。目前市场上的BI工具十分繁多,但是性能也参差不齐,这里我就以国产BI工具的优秀代表FineBI为例。

注:想要获取finebi下载地址,可以后台私信回复“电影”获得!

1、数据连接

首先导入我们需要分析的数据,finebi可以连接Excel,CSV,XML,以及各类数据库,这里因为有了python爬取到的excel表,所以直接选择excel导入即可。

python爬取百部电影数据,我分析出了一个残酷的真相

 

2、数据加工

我们爬取到的数据可能需要第二次加工,比如脏数据处理、数据合并、过滤等等,FineBI是通过自助数据集的方式,根据需求对原数据进行再加工处理,新建一个用于分析的数据集,再处理包括选择字段、过滤、分组汇总、新增列、字段设置、排序、合并的操作。

python爬取百部电影数据,我分析出了一个残酷的真相

 

3、数据可视化

因为本次涉及到的指标比较简单,所以基本通过FineBI拖拽数据字段即可呈现可视化。

python爬取百部电影数据,我分析出了一个残酷的真相

 

四、结论分析

不说废话,先放结论:

  • 国内电影市场接近饱和,今年的成绩是虚假繁荣;
  • 头部效应加剧,大多数电影票房惨淡,市场成绩不佳;
  • 票房的增长基本是靠电影价格拉动起来的,观影人次基本没有增长,电影寒冬到来;

1、票房排名前二十的电影

python爬取百部电影数据,我分析出了一个残酷的真相

 

今年票房前二十名中一半以上都是国产电影,看似繁荣,但其实从上图的区间柱状图中能够看出,《哪吒》、《流浪地球》、《复联4》三部电影属于第一梯队,票房在40亿以上;《我和我的祖国》、《中国机长》、《疯狂的外星人》、《海王》属于第二梯队,票房在20-30亿左右;剩下的电影中基本在20亿以下,排名20的《银行补习班》只有8亿。

整体来说,去年国内电影市场爆款较多,但是整体呈现阶梯状,断崖较多,大部分集中于前五名之中,大体上符合二八法则。

2、票房的帕累托模型

为了搞清是否真的符合帕累托法则,我特意用FineBI加入了一条票房累积百分比:

python爬取百部电影数据,我分析出了一个残酷的真相

 

结果很明显,排名前20%的电影占据了整个市场80%以上的票房总量,也就是说,去年国内市场的票房总量基本上靠着几大爆款电影撑起来的,票房分布越来越集中绝对不是一件好事,这意味大多数的电影成绩惨淡,根本没有生存空间。

3、票房占比、排片率与票房的关系

  • 票房占比:电影票房收入占总收入的比例,票房占比越高,说明电影质量越好,人们越想看;
  • 排片率:排片率高、票房低就是烂片,而排片率低、票房高的电影才是黑马;

python爬取百部电影数据,我分析出了一个残酷的真相

 

这张图我们可以跟排名前二十的柱状图对比一下,真正意义上高票房、高票房占比、低排片率的黑马电影有哪些呢?答案只有一部《流浪地球》。

《哪吒》的排片率高是因为上映同期没有什么优质电影与之竞争,所以《哪吒》的成功一半要归功于人和,一半要归功于天时;《疯狂外星人》的表现中规中矩,《海王》属于典型的商业片,《我和我的祖国》属于特殊情况,不能一概而论。

4、上座率与票房的关系

  • 上座率:即一部影片获得观众人次的多少,优秀的影片上座率就高,反之则低

python爬取百部电影数据,我分析出了一个残酷的真相

 

为了方便对比,我在图中加入了一条平均上座率的警戒线,其中上座率最高的是《我和我的祖国》、《我为你牺牲》,原因就不说了,大家应该都明白;其中比较奇怪的是《飞驰人生》、《新喜剧之王》、《攀登者》,上座率非常高,票房成绩却不如人意,应该是得益于其导演、主演的号召力。

《流浪地球》上座率在平均值以上,无论从哪个角度看都是一部好电影,无懈可击。

值得欣慰的是,上座率排名靠前的基本都是国产电影,看的出来国外电影尚不能满足大多数人的口味。

5、做点其他分析

python爬取百部电影数据,我分析出了一个残酷的真相

电影类型与上座率的关系

喜剧电影一骑绝尘,动画电影黑马突起,科幻电影方兴未艾,惊悚、悬疑、历史等小众题材的电影仍然惨淡无比。

 

python爬取百部电影数据,我分析出了一个残酷的真相

颜色越深代表上座率越高,字体越大代表票房越高

陈凯歌现在虽然经常被烂片之王所诟病,但是不得不说他的成绩还是很不错的,另外像宁浩、韩寒、郭帆、陈国辉等人都是国产电影的希望。

最后别忘了,python源代码和BI下载地址,都可以私信我“电影”获得!

神龙|纯净稳定代理IP免费测试>>>>>>>>天启|企业级代理IP免费测试>>>>>>>>IPIPGO|全球住宅代理IP免费测试

相关文章:

版权声明:Python教程2022-10-27发表,共计2753字。
新手QQ群:570568346,欢迎进群讨论 Python51学习