用python爬取3万多条评论,看韩国人如何评价韩国电影《寄生虫》?

Aidan075
• 阅读 1518

↑ 关注 + 星标 ~ 有趣的不像个技术号

每晚九点,我们准时相约 用python爬取3万多条评论,看韩国人如何评价韩国电影《寄生虫》?

用python爬取3万多条评论,看韩国人如何评价韩国电影《寄生虫》?

大家好,我是朱小五

今天给大家带来一个关于电影的数据分析文章。

别走啊,这次不是豆瓣,也不是猫眼

真的

今天分析的电影是韩国电影《寄生虫》。

它是由韩国导演奉俊昊自编自导的影片,一举拿下最佳影片、最佳导演、最佳原创剧本和最佳国际电影四座奥斯卡奖杯,创造历史成为奥斯卡史上首部非英语最佳影片。

nb plus!

这次带大家看看韩国人如何评价这部韩国电影的?

获取数据

数据从哪获取呢?

我们先打开韩国最大门户网站NAVER

用python爬取3万多条评论,看韩国人如何评价韩国电影《寄生虫》?

找到영화(电影)板块,搜索기생충(寄生虫)并打开

用python爬取3万多条评论,看韩国人如何评价韩国电影《寄生虫》?

上面介绍部分跟猫眼专业版一样,各种评分、演职员表、评分男女比例、年龄分布。

在评论区部分,它其实有点像是豆瓣和猫眼的综合体,无论看没看过都可以评价打分,不过看过的会单独有个小标识。

我们下划到评论区

下图中可以看到,目前有36360条评价,我们想要获取的数据是黑框中的内容。

包括每条留言的评论人昵称、评论时间、评分、评论内容以及这条评论得到的赞或踩。

用python爬取3万多条评论,看韩国人如何评价韩国电影《寄生虫》?

下面开始爬取评论数据

利用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  

运行结果:

用python爬取3万多条评论,看韩国人如何评价韩国电影《寄生虫》?

歪瑞古德!

这样我们就成功获取了韩国人评价韩国电影《寄生虫》的评论数据!

数据整理

我们简单看一下数据

用python爬取3万多条评论,看韩国人如何评价韩国电影《寄生虫》?

共35940条,比上文截图时候少了一点,这是因为我爬取和写这篇文章的时候有一点时间间隔,所以这个小问题请忽略。

用python爬取3万多条评论,看韩国人如何评价韩国电影《寄生虫》?

另外,非常明显,评论字段缺失了很多。

我查看了一下,认为是在这个网站观看过电影的人可以只打分,不写评论。

(有点像在猫眼上买了电影票,评论时候同样可以只打分,不写评论)

简单补齐它吧,直接删除还是会影响整体的评分的。

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)  

这样我们就补全了缺失值

简单看一下平均分吧

用python爬取3万多条评论,看韩国人如何评价韩国电影《寄生虫》?

用python爬取3万多条评论,看韩国人如何评价韩国电影《寄生虫》?

看来这就是韩国观众的打分(9.07)比网民对《寄生虫》虫的评价(8.48)要高。

这与国内的情况也是相似的,同一部电影猫眼淘票票的分数普遍比豆瓣上要高。

毕竟真金白银去看电影的人,肯定会认为它是一部好片子才去看。

只要不像被《爱情公墓》一样诈骗,基本观众的分数不会太低。

后面想讲韩国网友的评论做一个词云,这样的话我们就需要先将评论中的韩文翻译成中文。

翻译评论

采用哪个翻译软件呢?

尝试了几个常见的翻译,发现结果都大同小异。

用python爬取3万多条评论,看韩国人如何评价韩国电影《寄生虫》?

干脆采用了之前自己用过的有道翻译小接口。

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爬取3万多条评论,看韩国人如何评价韩国电影《寄生虫》?

额,这个翻译一言难尽,不过大体意思还是可以看懂的,不太影响做词云。

接下来我们开始尝试做做图。

分析与可视化

正常利用python分析电影评论都有一个环节是男女比例和评分比例,这次我们并没有获得相关数据,那么就用NAVER网站提供的结果图简单的讲一下吧。

用python爬取3万多条评论,看韩国人如何评价韩国电影《寄生虫》?

观看人群的性别比例非常均衡,各占50%。

各年龄段均有分布,其中[20,30)的观看人群最多。为什么10-20岁的青少年观看这么少呢?后面词云部分会回答这个问题。

用python爬取3万多条评论,看韩国人如何评价韩国电影《寄生虫》?

在上图普通网民的评价中,女性评分更高一些。随着年龄的增长,评分越低,难道是越是年龄大的人越看透了韩国的现状?

他们主要的欣赏点依次是“导演”、“연기”、“故事”、“视觉效果”、“电影原声”。

(其中的“연기”用翻译软件都是翻译成烟,难道是特效的意思?懂韩文的同学可以留言一下)

用python爬取3万多条评论,看韩国人如何评价韩国电影《寄生虫》?

至于看过电影的观众打分比普通网民会高,平均9.07分,而且男性比女性要略高。其他方面大体相似,就不讲了。

我们再看一下,韩国观众对电影《寄生虫》评论数量的时间走势。

plt.figure(figsize=(8,5), dpi=200)  
x = score_by_time.index.date  
y = score_by_time.values  
plt.plot(x,y,c="g",marker=".",ls="-")  

plt.title("韩国电影《寄生虫》评论数走势图")  
plt.xlabel("月份")  
plt.ylabel("评论数")  

结果如下

用python爬取3万多条评论,看韩国人如何评价韩国电影《寄生虫》?

可以明显看到,评论数量在电影《寄生虫》上映后达到一个高峰,而后随着时间的推移,数量逐渐减少。

之后有两个小高峰,分别是2019年8月初和2020年2月初。

通过查找新闻信息,收集到了两个消息:

1、韩国电影《寄生虫》,预计将在8月6日公开流媒体服务(就相当于我国的爱奇艺、优酷类似的平台)。

2、《寄生虫》2月10日拿下四项奥斯卡大奖后,在韩国的热度继续上升。

这样大家应该就解释清楚两个小高峰的问题啦。

最后我们再利用有道翻译好的评论数据做个WordCloud词云吧。

用python爬取3万多条评论,看韩国人如何评价韩国电影《寄生虫》?

在对主创人员的讨论中,奉俊昊导演的功力和宋康昊的杰出演技被多次提及,电影中提到的“气味”“果酱”“戒指”也被多次探讨,故事中对社会与现实的反思也是热门的讨论话题。

前文我提到了为什么10-20岁的青少年观看这么少呢?而且词云中“15”这个关键词也比较突出。

这是因为韩国于1998年建立电影分级制度。规定电影分为5个等级:全民、12岁以上、15岁以上、18岁以上可以观看和限制放映。

而《寄生虫》在韩国获得了“15岁以上可以观影”的等级判定。

对作品内容就不做评价了。

以上。

用python爬取3万多条评论,看韩国人如何评价韩国电影《寄生虫》?

后台回复关键词「**进群**」,即刻加入读者交流群~

用python爬取3万多条评论,看韩国人如何评价韩国电影《寄生虫》?

这篇文章的灵感在去年看《寄生虫》就有了,结果就拖延拖延;

到了今年《寄生虫》获得奥斯卡,结果又因为那段时间工作忙,没时间写,就拖到了现在。

所以说,大家多多点在看,这样我就不好意思拖延不发原创了,是不是用python爬取3万多条评论,看韩国人如何评价韩国电影《寄生虫》?

本文转转自微信公众号凹凸数据原创https://mp.weixin.qq.com/s/sZj1WaNOUQoMnylWgtvPOA,可扫描二维码进行关注: 用python爬取3万多条评论,看韩国人如何评价韩国电影《寄生虫》? 如有侵权,请联系删除。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Aidan075 Aidan075
3年前
如何用python制作动态二维码,来哄女朋友开心?
↑关注星标  有趣的不像个技术号每晚九点,我们准时相约  大家好,我是朱小五如何用python制作动态二维码,来哄女朋友开心?这句话前半部分相信大家已经很熟悉了,很多同学也给自己的网站地址做过图片为底的二维码。后半部分呢?那肯定要增加一些趣味啊,不然岂不是对不起凹凸数据的solgan。先看看在抖音上超级火的视频吧。原
Karen110 Karen110
3年前
​一篇文章总结一下Python库中关于时间的常见操作
前言本次来总结一下关于Python时间的相关操作,有一个有趣的问题。如果你的业务用不到时间相关的操作,你的业务基本上会一直用不到。但是如果你的业务一旦用到了时间操作,你就会发现,淦,到处都是时间操作。。。所以思来想去,还是总结一下吧,本次会采用类型注解方式。time包importtime时间戳从1970年1月1日00:00:00标准时区诞生到现在
Stella981 Stella981
3年前
Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''
Wesley13 Wesley13
3年前
4cast
4castpackageloadcsv.KumarAwanish发布:2020122117:43:04.501348作者:KumarAwanish作者邮箱:awanish00@gmail.com首页:
Stella981 Stella981
3年前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y
Stella981 Stella981
3年前
Docker 部署SpringBoot项目不香吗?
  公众号改版后文章乱序推荐,希望你可以点击上方“Java进阶架构师”,点击右上角,将我们设为★“星标”!这样才不会错过每日进阶架构文章呀。  !(http://dingyue.ws.126.net/2020/0920/b00fbfc7j00qgy5xy002kd200qo00hsg00it00cj.jpg)  2
Python进阶者 Python进阶者
9个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这