Python 爬虫分析后疫情电影现状:从低迷到稳定

百家 作者:CSDN 2020-09-23 20:05:15
作者 | Gordon,Alice
出品 | CSDN(ID:CSDNnews)
自今年3月份全国疫情以来,很多行业都受到了很大的冲击,甚至倒闭破产的不胜其数,其中受影响最深的行业之一就是影院行业。直到7月20日,国家电影局发布的一则公告:低风险地区影院可有序恢复开放营业,才宣布中国影院行业开始要走出今年的“寒冬”。
复工后的电影院是否走出了低迷?让我们通过爬虫数据分析来一探究竟。


数据获取


本文数据来源于猫眼票房,通过抓取2019年7月20日至9月22日,以及2020年7月20日至9月22日的票房数据,来分析并比较疫情下的影院行业现状。

# 抓取票房数据
def crawl(path):
    duration = (datetime.datetime.now()-datetime.datetime.strptime('20200720''%Y%m%d')).days
    days = '20200720'
    df =pd.DataFrame()
    for i in range(duration):
        try:
            headers = {'User-Agent''Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36',
                       'X-FOR-WITH':'Rz7i6ufGHjmGodGgu8BbUrav6q0DVrkeC5I7iR1aieo0JKLMIWrKB23CUCa30sB5g2mut8nHm5zagQwr8n9WzUV1B2MdplRa38rPEdN5FR5Ei9Op0hWjBndw7WgEr+4N2K5oMAp85ve1WArjpDa2XhOtge64qDRoEy53qsLl13UrBMVcg7Z2fQU48wHxEjkHsSGWySnSWHBs/flWxyj3OX+OSXf2fzg8fIVPTLI/k+w='}
            url = 'http://piaofang.maoyan.com/dashboard-ajax/movie?showDate={}'.format(days)
            r = requests.get(url, headers=headers)
            films_message = r.json()['movieList']['list']
            # 结果存入dataframe
            df2 = pd.DataFrame(films_message)
            # 插入时间列
            df2.insert(0'date', days)
            # 插入每日排名
            df2.insert(1'rank', df2.index)
            # 合并多个dataframe
            df = pd.concat([df, df2], axis=0, ignore_index=True)
            # 日期+1天
            days= (datetime.datetime.strptime(days, '%Y%m%d')+ datetime.timedelta(days=1)).strftime('%Y%m%d')
            print(df.shape,days)
        except:
            print(days)
            days= (datetime.datetime.strptime(days, '%Y%m%d')+ datetime.timedelta(days=1)).strftime('%Y%m%d')
            pass
    # 保存
    writer = pd.ExcelWriter(path)
    df.to_excel(writer,index=False, encoding="utf_8_sig")
    writer.save()


总共抓取了4861条数据,内容包括重映、零点场、点映和上映影片的每日票房数据。

图1 票房数据样例

另外,针对近期比较热门的两部院线影片《八佰》和《花木兰》,本文还抓取了豆瓣用户观影后的评论信息。由于豆瓣进行了全网限制,最多只能抓取500条评论。

图2 豆瓣影评样例

# 获取豆瓣电影ID
def crawl_ID():
    data = pd.read_excel('票房数据.xlsx',sheet_name='上映')
    movies = list(data['电影名称'].unique())
    for name in movies:
        url = 'https://movie.douban.com/subject_search?search_text={}'.format(name)
        # 用chrome浏览器打开
        driver = webdriver.Chrome()
        # 打开网址
        driver.get(url)
        time.sleep(2)
        html = driver.page_source
        soup1 = BeautifulSoup(html, 'lxml')
        if len(soup1.select('a.title-text')) > 0:
            targetUrl = soup1.select('a.title-text')[0].get('href')
            print(targetUrl)
            redis_db.sadd('douban_movieId', targetUrl)
        else:
            print("无结果")
        driver.close()
# 构建豆瓣影评链接
def get_url():
    douban_movieId_list = redis_db.smembers('douban_movieId')
    for douban_movieId in douban_movieId_list:
        start = 20
        for i in range(25):
            # 构建URL
            page = start * i
            url = douban_movieId + 'comments?start={}&limit=20&sort=new_score&status=P'.format(page)
            print(url)
            redis_db.sadd('douban_movieURL', url)


数据可视化


在对抓取后的数据进行清洗后,将数据导入Tableau中进行可视化。

图3 整体电影概况

通过图3了解到,2020年7月20日-9月22日这2个月内,全国影院放映的影片总数是122部,其中新上映影片77部,重映影片45部。与去年同期相比,放映的影片总数下降了22.35%。今年的票房总计54亿元,其中47.84亿元属于新上映影片,而重映票房占了6.16亿。与去年同期相比,减少了56.05%。另外,还对这两个月期间新上映影片的数量进行了比较,今年新上映数量平均每周5部,而去年的数量是8部。
而票房方面,可以将“电影票房时间轴”这副折线图以8月20日为阙值,划分成两部分进行分析。在8月20日之前,今年的票房主要分布在3000万的范围,波动性不大。而去年同期票房呈现周期性波动,并且均值在3亿元的范围。原因是去年这期间上映了《哪吒之魔童降世》、《速度与激情:特别行动》等一众好评的影片,拉动了整体院线票房。在8月20日之后,2019年和2020的波动幅度大致相似,每隔一周会出现一次波峰。由于今年8月份有《八佰》和《我在时间尽头等你》这两部影片的上映,出现票房总计(天)超过去年同期的情况,这也能从侧面反映出影院行业正在逐渐复苏。

图4 重映电影概况

今年由于疫情的原因,新上映的影片数量很少,出现了不少重映影片在院线放映的情况。但是,因为大部分观众都看过这些重映的影片,或者在网络上已经能下载观看的影片,这些影片所带来的票房效果比较一般。其中有三部影片还比较受观众喜爱,分别是《哈利波特与魔法石》、《误杀》和《星际穿越》,这三部影片的票房占了整个重映票房的71.1%。而《哈利波特与魔法石》这部电影更是中国内地重映的助力下,成为了第二部全球票房破10亿美元的《哈利·波特》电影。因为在2002年时,中国内地的影院行业并没有十分普及,很多观众都没能亲临院线感受这部神奇影片,此次重映让他们有机会补回当年的票根。
此外,从“重映电影数量时间轴”可以看出,重映影片已经从一开始的20多部减少到5部,这能说明越来越多的影片新上映,影院行业要开始恢复原状。

图5 新上映电影概况

图5展示了自影院复业以来,新上映影片票房排名TOP10的分布情况。排在第一位的是《八佰》,截至9月22日,票房总计已经达到29.21亿元,占据了总票房的一半以上,而且这还是疫情下影院座位减少的情况,如果是在正常情况下,应该不止目前这个票房。排在后面的影片分别是《我在时间尽头等你》(5.02亿元)、《信条》(4.23亿元)和《花木兰》(2.57亿元)。这里不得不提及《花木兰》这部与《八佰》有着相同遭遇的影片,都经历了多次撤档,同时也是讲述在中国发生的故事,但票房差距却如此大,简直让人大跌眼镜。

图6 《八佰》豆瓣影评词云图

笔者进一步分析了《八佰》及《花木兰》两部影片的豆瓣评论,通过词云图的方式来呈现用户好评及差评的影评内容。
《八佰》作为票房榜首,在豆瓣的评分是7.7分,不算特别好也不算特别差,大部分影迷打了4星评分。这部由管虎编导的影片,在豆瓣上的影评也是分成了两派,给了好评的影迷主要都是在称赞影片中“八百壮士”的无畏牺牲,为国家为民族奉献自己这种值得尊敬的大无畏精神。但同时也有人觉得,这部影片并没有还原真正的历史,而是改编成一部商业片,看上去热血但其实虚无。

图7 《花木兰》豆瓣影评词云图

《花木兰》的豆瓣评分4.9分,大部分人打分2星和3星,属于烂片。而此次票房滑铁卢的主要原因是这部影片改编于迪士尼的动画版花木兰,而不是中国故事的花木兰,这就造成了大部分观众看完都觉得莫名其妙。而作为主演的刘亦菲成为了影迷炮轰的对象,其实并不能怪她,因为这部电影的导演和编剧都是外国人,由一堆外国人来编写中国传统元素,难免会“水土不服”,处处透露出西方对古代中国东方审美的偏见。


结语


通过展示这两个月以来的影院票房数据情况,大致上可以知道影院行业已经开始从低迷重新走向稳定,而且每周都会有新的影片上映。相信再过不久,当你走在商场里,又能闻到爆米花的香味啦。

作者简介:

Gordon,对爬虫/机器学习/数据建模/可视化均有所涉猎的数据分析师
Alice,在读研究僧一枚,跨行新手数据分析师


更多精彩推荐

共建智慧云基石,阿里云携手英特尔走向数智未来

华为澳大利亚大动作,终止4.9亿投资;iPhone 12 或10月13日发布;Swift正式登陆Win 10 | 极客头条

那个放弃谷歌回老家二本教书的清华姚班生,现在怎么样了?

硅谷2020最新大数据学习路线:科学使用这一招,12周助你成为数据分析师

国产开源,GitHub 标星 47000+ ,百度飞桨从打响第一枪到战役突围

用以太坊承载的比特币,还只是起步阶段
点分享
点点赞
点在看

关注公众号:拾黑(shiheibook)了解更多

[广告]赞助链接:

四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/

公众号 关注网络尖刀微信公众号
随时掌握互联网精彩
赞助链接
百度热搜榜
排名 热点 搜索指数