作者 | 朱小五责编 | 郭 芮今天给各人带来一个关于影戏的数据分析文章。别走啊,这次不是豆瓣,也不是猫眼——真的,今天分析的影戏是韩国影戏《寄生虫》。它是由韩国导演奉俊昊自编自导的影片,一举拿下最佳影片、最佳导演、最佳原创剧本和最佳国际影戏四座奥斯卡奖杯,制造历史成为奥斯卡史上首部非英语最佳影片。这次带各人看看韩国人如何评价这部韩国影戏的?猎取数据数据从哪猎取呢?大家先打开韩国最大门户网站NAVER:找到영화(影戏)板块,搜索기생충(寄生虫)并打开:上面先容部门跟猫眼专业版一样,种种评分、演职员表、评分男女比例、年龄漫衍。在评论区部门,它其实有点像是豆瓣和猫眼的综合体,无论看没看过都可以评价打分,不外看过的会单独占个小标识。大家下划到评论区,下图中可以看到,目前有36360条评价,大家想要猎取的数据是黑框中的内容。包罗每条留言的评论人昵称、评论时间、评分、评论内容以及这条评论获得的赞或踩。下面开始爬取评论数据:使用requests和pyquery爬取数据,展示部门源码,完整见文末。def main: data =for i in range(1,200): #爬取几多页 url = 'https://movie.naver.com/movie/bi/mi/pointWriteFormList.nhn?code=161967&type=after&onlyActualPointYn=N&onlySpoilerPointYn=N&order=newest&page='+str(i) print('准备收罗第{}页数据'.format(i)) html = restaurant(url) doc = pq(html) for i in range(0,10): print(i) dic = {} dic['star'] = doc('li:nth-child(' + str(i+1) +') > div.star_score > em').text dic['text'] = doc('#_filtered_ment_' + str(i)).text dic['datetime'] = doc('li:nth-child(' + str(i+1) +') > div.score_reple > dl > dt > em:nth-child(2)').text dic['name'] = doc('li:nth-child(' + str(i+1) +') > div.score_reple > dl > dt > em:nth-child(1) > a').text dic['zan'] = doc('li:nth-child(' + str(i+1) +') > div.btn_area > a._sympathyButton > strong').text dic['cai'] = doc('li:nth-child(' + str(i+1) +') > div.btn_area > a._notSympathyButton > strong').text data.append(dic) #time.sleep(random.random) pd.DataFrame(data).to_csv('寄生虫评论.csv',encoding="utf_8",index = False) return data运行效果:歪瑞古德!这样大家就乐成猎取了韩国人评价韩国影戏《寄生虫》的评论数据!数据整理大家简朴看一下数据:共35940条,比上文截图时候少了一点,这是因为我爬取和写这篇文章的时候有一点时间距离,所以这个小问题请忽略。另外,很是显着,评论字段缺失了许多。我检察了一下,认为是在这个网站寓目过影戏的人可以只打分,不写评论。(有点像在猫眼上买了影戏票,评论时候同样可以只打分,不写评论)简朴补齐它吧,直接删除照旧会影响整体的评分的。def data_cleaning(df): cols = df.columns for col in cols: if df[col].dtype == 'object': df[col].fillna('缺失数据', inplace = True) else: df[col].fillna(0, inplace = True) return(df)这样大家就补全了缺失值。简朴看一下平均分吧:看来这就是韩国观众的打分(9.07)比网民对《寄生虫》虫的评价(8.48)要高。这与海内的情况也是相似的,同一部影戏猫眼淘票票的分数普遍比豆瓣上要高。究竟真金白银去看影戏的人,肯定会认为它是一部好片子才去看。只要不像被《恋爱公墓》一样诈骗,基本观众的分数不会太低。后面想讲韩国网友的评论做一个词云,这样的话大家就需要先将评论中的韩文翻译成中文。翻译评论采纳哪个翻译软件呢?实验了几个常见的翻译,发现效果都大同小异。爽性采纳了之前自己用过的有道翻译小接口。def translate(text): url = 'http://fanyi.youdao.com/translate?&doctype=json&type=KR2ZH_CN&i='+ text requ_text = requests.get(url) json_text = requ_text.json data = json_text['translateResult'][0][0]['tgt'] time.sleep(2+random.random) print('翻译中') return data将评论列翻译,并新建一列用以做词云:ata['text_t'] = data.apply(lambda x :translate(x['text']), axis=1)运行效果:额,这个翻译一言难尽,不外大要意思照旧可以看懂的,不太影响做词云。接下来大家开始实验做做图。分析与可视化正常使用python分析影戏评论都有一个环节是男女比例和评分比例,这次大家并没有获得相关数据,那么就用NAVER网站提供的效果图简朴的讲一下吧。寓目人群的性别比例很是平衡,各占50%。各年龄段均有漫衍,其中[20,30)的寓目人群最多。为什么10-20岁的青少年寓目这么少呢?后面词云部门会回覆这个问题。在上图一般网民的评价中,女性评分更高一些。随着年龄的增长,评分越低,难道是越是年龄大的人越看透了韩国的现状?他们主要的观赏点依次是“导演”、“연기”、“故事”、“视觉效果”、“影戏原声”。(其中的“연기”用翻译软件都是翻译成烟,难道是特效的意思?懂韩文的同学可以留言一下)至于看过影戏的观众打分比一般网民会高,平均9.07分,而且男性比女性要略高。其他方面大要相似,就不讲了。大家再看一下,韩国观众对影戏《寄生虫》评论数量的时间走势。plt.figure(figsize=(8,5), dpi=200)x = score_by_time.index.datey = score_by_time.valuesplt.plot(x,y,c="g",marker=".",ls="-")plt.title("韩国影戏《寄生虫》评论数走势图")plt.xlabel("月份")plt.ylabel("评论数")效果如下:可以显着看到,评论数量在影戏《寄生虫》上映后到达一个岑岭,尔后随着时间的推移,数量逐渐淘汰。之后有两个小岑岭,划分是2019年8月初和2020年2月初。通过查找新闻信息,收集到了两个消息:1、韩国影戏《寄生虫》,估计将在8月6日公然流媒体服务(就相当于我国的爱奇艺、优酷类似的平台)。2、《寄生虫》2月10日拿下四项奥斯卡大奖后,在韩国的热度继续上升。这样各人应该就解释清楚两个小岑岭的问题啦。最后大家再使用有道翻译好的评论数据做个WordCloud词云吧:在对主创人员的讨论中,奉俊昊导演的功力和宋康昊的良好演技被多次提及,影戏中提到的“气味”“果酱”“戒指”也被多次探讨,故事中对社会与现实的反思也是热门的讨论话题。前文我提到了为什么10-20岁的青少年寓目这么少呢?而且词云中“15”这个要害词也比力突出。这是因为韩国于1998年建设影戏分级制度。划定影戏分为5个品级:全民、12岁以上、15岁以上、18岁以上可以寓目和限制放映。而《寄生虫》在韩国获得了“15岁以上可以观影”的品级判定。对作品内容就不做评价了。以上。作者:朱小五,互联网公司数据分析师。热衷于Python爬虫,数据分析,可视化,小我私家民众号《凹凸玩数据》,有趣的不像个技术号~声明:本文系作者投稿,版权归其所有。