基于Python的豆瓣影评数据的爬取与分析

2024-05-19 14:11李海荣徐圣方蒋晨曦谌诗坤耿一蕊
电脑知识与技术 2024年9期
关键词:可视化分析数据采集

李海荣 徐圣方 蒋晨曦 谌诗坤 耿一蕊

摘要:在电影业快速发展的今天,越来越多的人喜欢在观影后,通过评论的方式在网络上留下自己的感悟。研究首先采用爬虫及反爬虫技术,获取豆瓣热度较高的电影《孤注一掷》的影评数据;其次,使用Matplotlib扩展库对影评数据的相关属性列进行可视化分析;最后通过对影评数据的分析,得出部分电影院可以结合公众的休闲时间来调整播放的场次,以增加电影院的收入,或者在新电影上映前,电影制片方可以在二线、三线城市加大宣传力度,进而增加票房收入的结论。

关键词:Python程序;爬虫技术;数据采集;影评;可视化分析

中图分类号:TP391      文献标识码:A

文章编号:1009-3044(2024)09-0075-05

开放科学(资源服务)标识码(OSID)

0 引言

随着互联网的快速发展,越来越多的人喜欢通过评论的方式在豆瓣网上留下自己的感悟,通过分析相关评论可以得到一些有价值的信息。豆瓣是一个社区网站,该网站成立于2005年3月6日,主要是以推荐书籍、影视、音乐起家[1]。《孤注一掷》这部电影是由宁浩监制、申奥执导,张艺兴、金晨等主演,于2023年8月上映。该电影取材于多个真实诈骗案件,主要讲述了程序员潘生、模特梁安娜等人无法抵抗海外高薪工作的诱惑,意外落入境外诈骗工厂的故事[2]。猫眼数据显示,截至2023年9月8日,这部电影的票房突破37亿元[3]。本研究主要通过Python程序对《孤注一掷》这部电影的影评数据进行爬取并进行可视化分析。

1 爬虫及相关技术

1.1 爬虫简介

爬虫,即网络爬虫,是一种按照网络协议编写相应代码来自动抓取万维网数据的一种程序[4]。该程序一共包含三个模块,分别是模拟请求、数据解析和数据保存[5]。本研究所采用的爬虫技术是基于Python程序实现的。

1.2 爬虫的意义

随着大数据时代的到来,网络数据越来越受到人们的关注,由于网络数据具有数据量大、价值密度低、数据处理速度快的特点[6],因此可以利用相关的爬虫技术来获取所需数据,为后期决策提供指导依据。

网络爬虫技术作为获取网络数据的重要手段之一,在网络数据的获取中扮演着重要的角色,例如,爬虫所获得的数据不仅可以为科研、商业、医疗等方面的研究提供依据,还可以实现数据的实时更新,确保信息的時效性[7]。

1.3 Python爬虫的原理

Python爬虫技术的基本原理,大致分为以下步骤:首先,发送HTTP请求:使用Python的Requests库向目标网站发送HTTP请求,请求的内容包括请求头、请求体等信息;其次,解析HTML页面:使用Python的Beautiful Soup库对返回的HTML页面进行解析并提取所需的内容[8],解析HTML页面的过程包括分析HTML结构、定位目标元素等;再次,数据处理和存储:对前面提取到的数据进行处理,包括去除HTML标签、清洗数据等,然后将处理后的数据存储到本地文件或数据库中,供后续分析使用;最后,爬虫策略的制定:制定一些爬虫策略,包括访问的目标网站频率、爬取深度、爬取规则等[9]。

1.4 相关扩展库

XPath拓展库,这个扩展库的主要功能是用来解析网页,需要与Requests拓展库配合使用,进而可以实现从被解析的网页上抓取数据。

Selenium拓展库,作为一个自动化的Web应用测试工具,程序员通常将它用来模拟用户在浏览器中的操作,使程序可以按预设的逻辑持续执行。

jieba拓展库,作为一个中文分词工具,可以将一段中文文本按照词语的颗粒度进行划分,将其切分成多个实意词。

Pandas拓展库,作为Python的核心数据分析库,旨在简单、直观地处理关系型、标记型数据,同时还提供了数据清洗等功能[10]。

1.5 应对反爬虫技术

在爬虫过程中,会对所爬取目标网站的服务器造成资源消耗,降低目标网站服务器的稳定性[11],为了更好地进行网络爬虫,通常需要先对目标网站进行分析,进而了解其反爬机制,然后根据反爬机制制定相应手段[11]。

本研究以豆瓣电影网站为例,该网站运用了反爬技术,会对用户每分钟的访问次数进行甄别,当识别到非正常访问时会对相关用户进行封号处理。应对这一反爬虫措施可在执行读取数据的循环函数中加入time.sleep()这一命令,使每次执行循环操作后有一定的停顿时间,以此模拟用户的正常操作。

2 系统方案设计

2.1 数据来源

本研究使用了豆瓣电影网《孤注一掷》(https://movie.douban.com/subject/35267224//comments?status=P) 的影评数据信息,包含的数据字段有:用户名、发表时间、居住城市、影评评分、影评正文、点赞量[12]。

2.2 步骤设计

首先,明确需要爬虫的目标网站;其次,获取目标网站源代码,并对目标网站进行解析;再次,获取所需影评数据;最后,对影评数据进行可视化分析[13]。

1) 网页源码抓取。首先,打开豆瓣电影网站,找到《孤注一掷》的影评页面,确定影评网址url为https://movie.douban.com/subject/35267224//comments?status=P,其中的35267224是影片的id,status=P是从该部电影影评的第一页开始[14]。其次,打开网页的检查功能,找到相应的User-Agent及cookie所对应的内容。再次,当开始执行爬取操作之后会看到网页开始翻页,此时网址url有所变化,其后网站链接会变为start=20&limit=20&status=P,其中limit=20是指一页限制20条影评数据,start=20是指从第20条数据处开始,往后每执行一次翻页操作,start的值都会增加20,由于豆瓣影评网站的限制,所爬取的数据量有限,待爬到一定数据量后程序将自动终止[15]。最后,通过Requests以及XPath拓展库发送网络请求,查看并获取所需数据,再利用Pandas拓展库读取数据,并使用pd.DataFrame()函数来构造新的数组进行分类。

2) 网页解析。通过上一步操作之后,可以使用XPath拓展库的方法定位想要爬取的相应数据,特别需要注意的是这里的定位是根据其HTML层级位置确定的,所以需要能够准确找到爬取数据的HTML定位。

3) 对所有页面执行爬取操作并保存数据。在爬取数据时,首先可以使用Selenium拓展库进行虚拟点击操作,来判断被访问的网址是否可以被正常访问,与此同时也可以判断当前页面是否存在数据。在判断出当前页面有数据后,再使用解析库lxml从HTML源代码中提取评论信息。其次,通过解析网页内容获取dom文件,之后再执行判断语句,判断是否存在下一页,如果存在下一页就继续运行,执行confirm_bnt.click()代码实现翻页操作,如不存在就终止程序。最后,将所爬取的数据存入本地CSV文件中。

3 《孤注一掷》电影的数据可视化分析

3.1 数据预处理

通过对保存的CSV文件中的原始数据进行初步检查,发现存在缺失值、重复值等异常数据。此时,需要对原始数据进行预处理,进行纠错,从而提高数据分析的准确性和可靠性,具体步骤包括:数据检测、审查、处理、校验等步骤来实现数据纠错,进而清除原数据中的无用信息[16]。

3.2 数据可视化分析

3.2.1 影评文本可视化分析

本研究对所爬取CSV文件中的“影评评分”和“影评正文”两列数据采用词云图的方式进行文本可视化分析。具体步骤如下:首先,通过“影评评分”列进行好评与差评的鉴定,鉴定标准为“好评”大于等于30分,“差评”小于30分;其次,对“影评正文”列进行分词、去除停用词、使用列表转换字符把数据转换成列表、使用Pandas库中的Series()来转换成序列、value_counts()统计频率;最后,使用Matplotlib库来绘制词云。

根据图2“好评”词云图,可以看出关键词为“现实”“故事”“角色”“题材”。《孤注一掷》作为一部具有防诈骗意义的电影,题材新颖,角色和故事刻画较为清晰。“现实”这个关键词占比相对较大,可能是因为有一部分人认为该电影的故事逻辑清晰,具有现实警醒意义;“题材”这个关键词较为突显,从我国受骗人数和受骗金额来看,该电影属于现实主义题材;“角色”词频较高,从电影中各类人物角色的演绎可以看出,该电影比较符合现实情境。

根据图3“差评”词云图,词频较高的是“诈骗”“反诈”“太差”和“宣传片”。出现上述高频词的原因可能是:①部分观众认为该类电影更多的是起到宣传警示作用,更适合在受众面较广的平台进行播放,而不是在受众面较小的电影院播放;②少部分观众未经历过诈骗事件,所以会质疑电影的真实性,同时,也有少部分观众认为电影情节衔接性较差,给观众一种“出戏”的感觉,从而给出“太差”的评价。

3.2.2 影评评分、时间评论数量分析

①《孤注一掷》影评评分饼状图分析。本研究采用Matplotlib库对“影评评分”列进行可视化分析,并以饼状图的方式进行展现。根据图4可知好评率为75.44%(评分在三颗星以上且包含三颗星),由此可以看出《孤注一掷》的豆瓣好评率较高,初步判断大多数观众对《孤注一掷》这部电影持有推荐的态度[17]。

②《孤注一掷》影评数量随时间的变化。根据图5可知,《孤注一掷》的影评数量从2023年7月28日至2023年8月7日总体呈现出增长趋势,并于2023年8月7日影评数量达到最大值,可以看出公众对该电影期望值较高,可能与前期制片方对该部电影进行了大力宣传和超前点映等工作有关。《孤注一掷》这部电影在2023年8月8日全国正式上映后,影评数量总体呈现为下降趋势,可能是因为公众前期对该电影的期望值过高,实际观影后未能达到公众预定的期望值,导致影评数量降低。

③《孤注一掷》影评数量随时刻变化分析。由图6《孤注一掷》影评日平均数量的时刻变化情况可以看出,该数据总体上呈“先上升后下降”的趋势。从6点至22点总体呈现“上升”趋势,其中在19点至22点上升幅度较大,可能是因为这个时间段属于人们的下班时间,因此人们有更多的空闲时间去休闲娱乐。从22点至次日6点,总体呈“下降”的趋势,这可能与人们健康的生活作息规律有关。通过上述分析可知,电影院在后期影片播放场次方面,可以结合人们的休闲时间来调整播放的场次,以增加电影院的收入。

3.2.3 参评人员的城市分布情况分析

使用Matplotlib扩展库,对参评人员所在地进行统计分析,找出排名前10的城市,并用柱状图进行展示。由图7可知,排名前10的城市分别是北京、上海、广州、杭州、成都、深圳、长沙、武漢、天津、南京。由此可见,排名前10的城市主要集中在经济比较发达的一线城市,可能是因为电影制片方在这些城市进行了大力的宣传,增加了群众对该电影的期望值。建议后期相关电影制片方在电影上映前可以在二线、三线城市加大宣传力度,提高人们对电影的关注度。

3.2.4 参评人员评分与所在城市分布情况分析

通过对CSV文件中的“影评评分”和“居住城市”两列中所包含的数据进行关联分析,找出了排名前10的城市在各个评分等级的数量。由表2可知,北京市总参评数量为126人,其中30分及以上分数为87人,好评率为69.04%;上海市总参评数量为47人,其中30分及以上分数为36人,好评率为76.60%;南京市总参评数量为8人,其中30分及以上分数为4人,好评率为50.00%。最后,从总体来看排名前10的城市中,好评率达到总人数的73%以上。

4 结论

本研究以豆瓣电影网站的影评数据为数据源,使用爬虫及反爬虫技术对《孤注一掷》这一部电影的相关影评数据进行了爬取。然后对所爬取的数据进行预处理并利用“居住城市”“发表时间”“影评评分”“影评正文”等字段进行可视化分析。由前文的可视化分析结果得出以下结论:①《孤注一掷》这部电影好评率较高,是一部展示现实主义题材且具有防诈骗意义的电影。②部分电影院可以结合人们的休闲时间来调整播放的场次,以增加电影院的收入。③城市评分排名前10的城市主要集中在经济比较发达的一线城市,因此,在之后的新电影上映前,电影制片方可以在二线、三线城市加大宣传力度,进而增加票房收入。

参考文献:

[1] 傅海,汪如媛.新世纪中印票房冠军电影的海外接受比较研究——基于IMDb与豆瓣网数据[J].电影评介,2018(18):5-9.

[2] 搜狐新闻.https://www.sohu.com/a/711631600_121124330.

[3] 杭霞麗,龚小妹.基于4Cs的中国电影市场高票房现象分析[J].河南财政税务高等专科学校学报,2018,32(2):23-25.

[4] 贺洪煜.基于Python的科技情报智能化识别检索系统的研究与设计[J].科技视界,2019(11):72-74.

[5] 刘星辰.基于Hadoop的分布式网络爬虫的研究与实现[D].西安:西安理工大学,2019.

[6] 孙延华.基于大数据的高等艺术院校财务信息化建设有关对策研究[J].财会学习,2017(24):51,53.

[7] 王飞.融合用户行为分析的微博情感倾向研究[D].济南:山东师范大学,2019.

[8] 王慧玲.招聘网站数据可视化分析平台的设计与实现[D].曲阜:曲阜师范大学,2020.

[9] 刘荣,王爱强.网络爬虫技术滥用的刑事责任[J].中国检察官,2021(18):28-31.

[10] 李卿.基于Pandas+Python的机场进出场流量和气象情报统计系统[J].现代计算机,2020(9):29-32.

[11] 洪丽华,黄琼慧.基于Python爬虫技术的研究[J].价值工程,2022,41(34):154-156.

[12] 胡亚娇,刘思维,谢志峰,等.基于多态信息挖掘的电影用户画像研究[J].现代电影技术,2020(6):16-22.

[13] 王志.电影网站数据挖掘可视化系统设计与实现[D].武汉:华中科技大学,2019.

[14] 裴丽丽.基于Python语言对电影影评数据爬虫与词云制作[J].信息记录材料,2020,21(5):116-118.

[15] 胡海潮.基于新浪微博的爬虫程序设计与实现[J].无线互联科技,2018,15(9):40-42.

[16] 张意.基于UWB的隧道结构健康监测系统[D].大连:大连理工大学,2018.

[17] 邵小青,贾钰峰,章蓬伟,等.基于Python影评数据挖掘与分析——以《你好,李焕英》为例[J].信息记录材料,2021,22(10):224-226.

【通联编辑:王 力】

猜你喜欢
可视化分析数据采集
高校学生管理法治化研究:基于CiteSpace的可视化分析
我国职业教育师资研究热点可视化分析
声波吹灰技术在SCR中的应用研究
可视化分析技术在网络舆情研究中的应用
国内外政府信息公开研究的脉络、流派与趋势
CS5463在植栽用电子镇流器老化监控系统中的应用
大数据时代高校数据管理的思考
基于广播模式的数据实时采集与处理系统
通用Web表单数据采集系统的设计与实现
基于开源系统的综合业务数据采集系统的开发研究