APP下载

基于Python爬虫的豆瓣电影影评数据可视化分析

2021-04-04蔡文乐周晴晴刘玉婷秦立静

现代信息科技 2021年18期
关键词:爬虫可视化

蔡文乐 周晴晴 刘玉婷 秦立静

摘  要:利用Python网络爬虫技术对豆瓣热度较高的电影《你好,李焕英》的影评数据进行了爬虫分析,根据爬虫所得到的影评数据信息,制作了影评词云图,通过数据可视化技术,对影评分数分布、评论数量与时间的关系,以及评论数量与城市分布的关系进行了相关的分析研究,从而直观地展示了电影上映后观众的观影感受,同时也为其他用户提供了些许观影参考。

关键词:Python;爬虫;影评;可视化

中图分类号:TP391.1 文献标识码:A 文章编号:2096-4706(2021)18-0086-05

Abstract: The Python web crawler technology is used to make the crawler analysis to the film review data of the film Hello, Li Huanying with high popularity of Douban. According to the film review data information obtained by the crawler, the cloud map of film review words is made. Through the data visualization technology, the distribution of film review scores, the relationship between the number of reviews and time, and the relationship between the number of reviews and urban distribution are analyzed and studied, so as to intuitively show the audiences viewing experience after the film is released, and also provide some viewing references for other users.

Keywords: Python; crawler; film review; visualization

0  引  言

国内电影市场增长迅速,中国已成为世界第二大电影市场,并在不断缩小与北美市场的差距,电影业迸发出强劲活力[1]。如今,观众观看影视作品更加注重选择符合自己的价值观,电影制作有新意、有意义的电影,而不选择单纯博人眼球,利用流量明星赚取票房的电影。豆瓣电影作为中国最大的电影分享与评论社区,可提供最新的电影介绍及相关评论,并根据个人喜好,向用户推荐电影,同时,用户也可以根据电影的打分和影评选择是否观看一部电影,所以,对大量的影评数据进行深入分析,了解大众对电影的态度以及电影本身的特色,为观影者提供正确的导向是非常有意义的。在现在各种资源充斥的时代,有些电影人们一致认为他的质量有待提高,但是仍然会有少数的人选择去观看,利用网络数据爬虫,可获取到更加真实、全面的、有价值的数据信息[2]。

互联网的快速发展,迎来了一个关于大数据的崭新时代,每个人的一切都关乎着各种各样的数据,而且人们也越来越注重数据所带来的价值。如今,万维网已成为大量信息的有效载体,可是对有效信息的提取和利用却成为了一个巨大的挑战。利用网络爬虫技术,通过网站所允许的合法途径,我们可以方便快捷地获取到目标网页的数据,从而对获取到的数据进行分析研究,挖掘出数据背后的价值。

本文基于Python语言,结合网络爬虫技术,对当下热门电影《你好,李焕英》的影评数据进行数据爬取,并通过数据可视化技术,对影评中有价值的数据信息进行分析研究,直观地展示出观影者对热映电影最真实的感受。

1  网络爬虫原理

网络爬虫技术实际上就是一种互联网处理数据的机器人,它通过爬取互联网上网站上的内容来工作,采用计算机编写的语言或者脚本,有既定的目标,有选择地去访问网页,并建立链接,自动地从网页上爬取所需要信息。网络爬虫,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本,可以自动采集所有其能夠访问到的页面内容[3]。爬虫是从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件,可以抓取在不同URL之下的各种文章,链接和图片等,是一个从web上自动下载网页的计算机程序[4]。爬虫的基本过程可以分为四步:向服务器发出请求,脚本通过 HTTP库向目标站点发出Request请求,请求的内容可包含headers等信息,等待对方服务器响应;获取响应内容,得到一个包括爬取页面内容的Response,然后进行下一步的数据解析[5];解析数据内容,响应中所包含的内容可能有多种形式,可使用直接处理、正则表达式、爬虫的解析库等方法进行解析;保存所需数据,将数据保存至任何特定格式的文件或文本中,也可保存至数据库或表格中[6]。

2  获取影评数据

2.1  网页源码抓取

本文选取最近上映的,热度较高的电影《你好,李焕英》进行数据的爬取。通过目标网址https://movie.douban.com/subject/34841067/comments进入豆瓣电影《你好,李焕英》的影评界面。通过分析URL发现,每个subject/后面都有一个固定的数字代表某一部特定的电影,34841067代表的电影就是《你好,李焕英》。基于python的selenium库模拟浏览器操作的方法,找到相应的网址页面,将网页和网页内容进行分离,抓取网页源码,提取其中的关键信息,将抓取后的数据存放在数据库或者表格文件中。通过Chrome浏览器的开发者工具,就可以看到源代码,如图1所示。gzslib202204051159

网页源码抓取:

from selenium import webdriver

import pandas as pd

url = ‘http://movie.douban.com/subject/34841067/comments?ststus=p

drive = webdriver.chrome()

drive.get(url)

如图2所示。

2.2  Xpath解析网页数据

Xpath采用类似于正则表达式来匹配HTML文件中的内容,其中的谓语用来查找某个特定的节点或者包含某个特定值的节点,对一些函数进行模糊搜索。使用路径表达式来选取XML文档中的节点或者节点集,节点是通过路径(path)或者步(steps)来选取的。通过解析代码找到用户的信息,评分,发布时间,短评等相关内容,如图3所示。

从网页源码中提取的数据(主要有用户的短评、好评差评,以及电影的评分、观影者的居住城市、评论时刻的变化情况),以csv格式的文件存储,爬取的数据如图4所示。

部分代码为:

names=dom.xpath('//div[@class="comment-item "]//span[@class="comment-info"]/a/text()')#获取用户名信息

ratints=dom.xpath('//div[@class="comment-item "]//span[@class="comment-info"]/span[2]/@class')#评分

times=dom.xpath('//div[@class="comment-item "]//span[@class="comment-info"]/span[@class="comment-time "]/@title')#评论发布时间

messages=dom.xpath('//div[@class="comment-item "]/div[@class="comment"]//span[@class="short"]/text()')#短評正文

user_url=dom.xpath('//div[@class="comment-item "]//span[@class="comment-info"]/a/@href')#用户主页网址

votes=dom.xpath('//div[@class="comment-item "]/div[@class="comment"]//span[@class="votes"]/text()')#赞同数量

3  数据可视化

3.1  影评词云图

数据可视化主要是借助图形化的手段,直观地传达关键的内容与特征,从而实现对数据的深入洞察和分析了解。词云图由频繁出现的词汇组成类似云的彩色图形,用于展示大量的电影热评的文本数据。借助Python的jieba库获取关于影评内容的中文分词,然后再根据爬取到的评分数据,得到如图5所示的词云图。

《你好,李焕英》是一部亲情题材的喜剧电影,以贾玲回忆母亲为主线,电影上映后,引起了许多观众的共鸣。通过图5的影评词云图可以看到,关键词就是“妈妈”“贾玲”“女儿”等,而这些热点词汇也和电影的主题相契合。图5中还出现“煽情”等词汇,由此可见,观众的观影感受不尽相同,对电影的喜爱程度也不同。

词云图绘制部分代码为:

def my_word_cloud(data=None,stopWords=None,img=None)

datacut = data.apply(jieba.lcut)

data.After = dataCut.apply(lambda x:[i for i in x if i not in stopWords])

wordFre = pd.Series(_flatten(list(dataAfter))).value_counts()

mask = plt.imread(img)

wc.fit_word(wordFre)

plt.imshow(wc)

plt.axis(‘off)

3.2  评分分数分析

从爬取到的数据中取出评分数据,对其进行统计,并绘制饼图,如图6所示。从饼图的评分分数分布来看,来自北京的观众对《你好,李焕英》电影的支持度最高,其次是江苏南京,其他各地区观众的评分都相差不大。总体来说,这部电影的评分还是很高的,说明观众对整部电影的认可度还是比较高的,由此可以看出人们喜好还是更加倾向于此类电影。

分析用户评论与评论发表日期之间的关系,如图7所示,可以直观的看到,评论的数量随着时间的推移逐渐减少,而评论数量的高峰期就是在电影的上映时间2021年2月12日左右,之后逐渐变缓慢,这也和现实相吻合,在电影刚上映的时候,观众的新鲜感比较强,之后,随着时间的推移,关注度逐渐降低,影评数量也随之减少。

分析评论数量与时间关系的部分代码为:

Num=pd.to_datatime(data[‘发表时间]).apply(lambda x: x,hour).value_counts()

Num=num.sort_index()

plt.plot(range(len(num)),num)

plt.xticks(range(len(num)),num.index)

plt.title(‘评论数量随时间的变化情况)

plt.grid()

3.3  评论数量与城市分布分析

随着观影选择和影片类型的日益增多,观众慢慢形成了自己的一些观影习惯,电影市场也早已不是“全国上下一盘棋”,各地观众的观影口味早已出现了分化,电影行业的地域差异也越来越显著。通过统计每个城市观影者发布的评论数量,绘制出评论数量最多的十个城市,如图8所示,发布评论数量最多的城市是北京,其次是上海,其他各城市发布的评论数量基本持平。图8也反映出在电影类型、影片风格方面,观影者的需求差异比较大,同一部影片在各个地区的活跃程度不尽相同。

4  结  论

本文基于Python编程语言,以豆瓣电影《你好,李焕英》为爬取目标,完成了对影评数据的爬取和分析,并使用可视化方法展示了影评词云图、评分分数分布、评论数量与时间及分布城市的关系,通过这些数据的提取,全面挖掘了影评背后的关键信息,为电影行业研究观众的喜好和电影行业的发展提供了参考。

参考文献:

[1] 辛雨璇,王晓东.基于文本挖掘的电影评论情感分析研究 [J].牡丹江师范学院学报(自然科学版),2021(1):25-28.

[2] 高雨菲,毛红霞.基于Python的豆瓣影视短评的数据采集与分析 [J].现代信息科技,2020,4(24):10-12+16.

[3] 黄蓉,毛红霞.基于豆瓣网某系列电影数据采集与可视化分析 [J].现代信息科技,2020,4(23):4-7.

[4] 黄子豪,张舒.网络爬虫对互联网安全的影响及“反爬”策略的研究 [J].科学技术创新,2021(10):120-121.

[5] 简悦,汪心瀛,杨明昕.基于Python的豆瓣网站数据爬取与分析 [J].电脑知识与技术,2020,16(32):51-53.

[6] 成文莹,李秀敏.基于Python的电影数据爬取与数据可视化分析研究 [J].电脑知识与技术,2019,15(31):8-10+ 12.

猜你喜欢

爬虫可视化
数据可视化设计在美妆类APP中的应用
思维可视化
基于Python的网络爬虫和反爬虫技术研究
Python反爬虫设计
复变函数级数展开的可视化实验教学
复变函数级数展开的可视化实验教学
复变函数共形映射的可视化实验教学
复变函数共形映射的可视化实验教学
基于Scrapy框架的分布式网络爬虫的研究与实现
谁抢走了低价机票