用数据揭秘《一出好戏》好在哪里

简介: 黄渤导演的处女作《一出好戏》在八月十号上映,两天累计票房4.37亿,豆瓣评分7.4,网友一片叫好,没想到拍出了一部魔幻现实主义的故事。下面我们用数据来展示一下网友的看法。

黄渤导演的处女作《一出好戏》在八月十号上映,两天累计票房4.37亿,豆瓣评分7.4,网友一片叫好,没想到拍出了一部魔幻现实主义的故事。下面我们用数据来展示一下网友的看法。

获取数据

这里选择用猫眼来获取网友的评论
先来分析一下网页,打开猫眼一出好戏页面,发现只有几条评论。


img_a4e0873b4af7b6e11b3cb831f1abcd9b.png
影评

猫眼在没有登录的情况下并没有展现评论内容,我们换一种思路,用电脑模拟手机客户端来获取数据。


img_f9133dfe5d74592d8720d10d16473fcd.png

点击箭头所指可以看到,已经在模拟手机端,这样我们就能看到影评数据了。
接下来我们点击查看全部影评,并没有发现页面跳转,这显然是Ajax动态加载,我们查看一下参数:
img_b8ad2f932e5216e4c616e2cd5017ca13.png
参数

我们可以构造参数,也可以查看他的url

   for i in range(900):
        url = 'http://m.maoyan.com/mmdb/comments/movie/1203084.json?_v_=yes&offset={}'.format(str(i))

最后我们利用这种方式构造url。
接下来解析数据,以及保存数据:

class Spider():

    def get_page(self,url,headers):
        try:
            response = requests.get(url,headers=headers)
            if response.status_code == 200:
                return response.json()
            else:
                return None
        except Exception:
            return None

    def parse_page(self,html):
        for item in html['cmts']:
            yield{
                'content_name':item['time'].split(' ')[0],
                'city':item['cityName'],
                'contemt':item['content'],
                'score':item['score'],
            }

    def save_to_txt(self,data):
        #保存数据
        with open('data.txt','a',encoding='utf-8') as f:
            f.write(json.dumps(data,ensure_ascii=False) + '\n')

    def run(self):
        for i in range(900):
            url = 'http://m.maoyan.com/mmdb/comments/movie/1203084.json?_v_=yes&offset={}'.format(str(i))
            headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64)'
                                     ' AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'}
            html = self.get_page(url,headers)
            for data in self.parse_page(html):
                self.save_to_txt(data)

数据处理

爬取的数据有些是重复的,我们要清洗一下:

def qu_chong():
    outopen = open('data.txt', 'r', encoding='utf-8')
    inopen = open('data_new.txt', 'a', encoding='utf-8')
    L = []
    for line in outopen.readlines():
        if line not in L:
            L.append(line)
            inopen.write(line)

    outopen.close()
    inopen.close()

if __name__ == '__main__':
    qu_chong()

词云展示

接下来我们用结巴库和wordcloud库,把网友评论制成词云,来看看网友对一出好戏的评价


img_3c4596edf8c648209aa4b9c72df9542f.jpe
词云图.jpg

可以看到,其中「不错」、「人性」、「值得一看」占了网友大多数评论,看来网友对《一出好戏》评价蛮不错的。还有网友说张艺兴演技炸裂,确实在这部剧中演的很好。
下面是代码

import jieba
import wordcloud
from scipy.misc import imread

comment = []
with open('data_new.txt','r',encoding='utf-8') as f:
    for item in f.readlines():
        comment.append(item.split(',')[2].replace('\n',''))


comment_ci = jieba.lcut(str(comment),cut_all=False)
txt = ' '.join(comment_ci)
w = wordcloud.WordCloud(font_path='msyh.ttc',width=1000,max_font_size=100,font_step=2,
                        height=700,max_words=600,stopwords={'content','contemt','电影','剧情','有点'})

w.generate(txt)
w.to_file('词云图.jpg')

星级分布

接下来看看网友的平分


img_62eec4108c70c42019d4334697d8e8af.png
评分
from pyecharts import Pie
from pyecharts import Bar

rates = []
#获取评分数据
with open('data_new.txt','r',encoding='utf-8') as f:
    for line in f.readlines():
        rates.append(line.split(',')[-1][10:].replace('}\n',''))

v5 = rates.count('5') + rates.count('4.5')
v4 = rates.count('4') + rates.count('3.5')
v3 = rates.count('3') + rates.count('2.5')
v2 = rates.count('2') + rates.count('1.5')
v1 = rates.count('1') + rates.count('0.5')
attr = ['五星','四星','三星','二星','一星']
v= [v5,v4,v3,v2,v1]

bar = Bar('数据来源:','公众号sixkery')
bar.add('一出好戏',attr,v)
bar.render()

可以看到,大部分的网友都非常支持黄导。
如果你还没有看,正好趁着周末放松一下吧。

目录
相关文章
|
算法 Android开发 C++
LeetCode 周赛上分之旅 #49 再探内向基环树
学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越抽象,它能覆盖的问题域就越广,理解难度也更复杂。在这个专栏里,小彭与你分享每场 LeetCode 周赛的解题报告,一起体会上分之旅。
98 1
|
监控 前端开发 网络协议
前后端的爱恨情仇-续集
前后端的爱恨情仇-续集
前后端的爱恨情仇-续集
|
程序员 编译器 Python
《C游记》 第叁章 - 一朝函数思习得 模块思维世间生(贰)
《C游记》 第叁章 - 一朝函数思习得 模块思维世间生(贰)
127 0
|
程序员 C语言
《C游记》 第叁章 - 一朝函数思习得 模块思维世间生(壹)
《C游记》 第叁章 - 一朝函数思习得 模块思维世间生(壹)
129 0
|
存储 编译器
|
弹性计算 Linux 数据库
发生了这种情况,数据还有救吗?
这样的惊喜还是少一些吧!
659 0
发生了这种情况,数据还有救吗?
史蒂夫·乔布斯成功的的七条秘诀
导语:《史蒂夫·乔布斯的创新秘诀》一书的作者为读者总结了苹果公司领袖史蒂夫·乔布斯成功的七个秘诀,供广大业界人士参阅。 在这辞旧迎新之际,企业的头头脑脑们都在寻找新的、创造性的途径来推动他们各自的品牌成长。
1269 0