李海榮 徐圣方 蔣晨曦 諶詩坤 耿一蕊
摘要:在電影業(yè)快速發(fā)展的今天,越來越多的人喜歡在觀影后,通過評論的方式在網(wǎng)絡(luò)上留下自己的感悟。研究首先采用爬蟲及反爬蟲技術(shù),獲取豆瓣熱度較高的電影《孤注一擲》的影評數(shù)據(jù);其次,使用Matplotlib擴(kuò)展庫對影評數(shù)據(jù)的相關(guān)屬性列進(jìn)行可視化分析;最后通過對影評數(shù)據(jù)的分析,得出部分電影院可以結(jié)合公眾的休閑時間來調(diào)整播放的場次,以增加電影院的收入,或者在新電影上映前,電影制片方可以在二線、三線城市加大宣傳力度,進(jìn)而增加票房收入的結(jié)論。
關(guān)鍵詞:Python程序;爬蟲技術(shù);數(shù)據(jù)采集;影評;可視化分析
中圖分類號:TP391? ? ? 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2024)09-0075-05
開放科學(xué)(資源服務(wù))標(biāo)識碼(OSID)
0 引言
隨著互聯(lián)網(wǎng)的快速發(fā)展,越來越多的人喜歡通過評論的方式在豆瓣網(wǎng)上留下自己的感悟,通過分析相關(guān)評論可以得到一些有價值的信息。豆瓣是一個社區(qū)網(wǎng)站,該網(wǎng)站成立于2005年3月6日,主要是以推薦書籍、影視、音樂起家[1]?!豆伦⒁粩S》這部電影是由寧浩監(jiān)制、申奧執(zhí)導(dǎo),張藝興、金晨等主演,于2023年8月上映。該電影取材于多個真實(shí)詐騙案件,主要講述了程序員潘生、模特梁安娜等人無法抵抗海外高薪工作的誘惑,意外落入境外詐騙工廠的故事[2]。貓眼數(shù)據(jù)顯示,截至2023年9月8日,這部電影的票房突破37億元[3]。本研究主要通過Python程序?qū)Α豆伦⒁粩S》這部電影的影評數(shù)據(jù)進(jìn)行爬取并進(jìn)行可視化分析。
1 爬蟲及相關(guān)技術(shù)
1.1 爬蟲簡介
爬蟲,即網(wǎng)絡(luò)爬蟲,是一種按照網(wǎng)絡(luò)協(xié)議編寫相應(yīng)代碼來自動抓取萬維網(wǎng)數(shù)據(jù)的一種程序[4]。該程序一共包含三個模塊,分別是模擬請求、數(shù)據(jù)解析和數(shù)據(jù)保存[5]。本研究所采用的爬蟲技術(shù)是基于Python程序?qū)崿F(xiàn)的。
1.2 爬蟲的意義
隨著大數(shù)據(jù)時代的到來,網(wǎng)絡(luò)數(shù)據(jù)越來越受到人們的關(guān)注,由于網(wǎng)絡(luò)數(shù)據(jù)具有數(shù)據(jù)量大、價值密度低、數(shù)據(jù)處理速度快的特點(diǎn)[6],因此可以利用相關(guān)的爬蟲技術(shù)來獲取所需數(shù)據(jù),為后期決策提供指導(dǎo)依據(jù)。
網(wǎng)絡(luò)爬蟲技術(shù)作為獲取網(wǎng)絡(luò)數(shù)據(jù)的重要手段之一,在網(wǎng)絡(luò)數(shù)據(jù)的獲取中扮演著重要的角色,例如,爬蟲所獲得的數(shù)據(jù)不僅可以為科研、商業(yè)、醫(yī)療等方面的研究提供依據(jù),還可以實(shí)現(xiàn)數(shù)據(jù)的實(shí)時更新,確保信息的時效性[7]。
1.3 Python爬蟲的原理
Python爬蟲技術(shù)的基本原理,大致分為以下步驟:首先,發(fā)送HTTP請求:使用Python的Requests庫向目標(biāo)網(wǎng)站發(fā)送HTTP請求,請求的內(nèi)容包括請求頭、請求體等信息;其次,解析HTML頁面:使用Python的Beautiful Soup庫對返回的HTML頁面進(jìn)行解析并提取所需的內(nèi)容[8],解析HTML頁面的過程包括分析HTML結(jié)構(gòu)、定位目標(biāo)元素等;再次,數(shù)據(jù)處理和存儲:對前面提取到的數(shù)據(jù)進(jìn)行處理,包括去除HTML標(biāo)簽、清洗數(shù)據(jù)等,然后將處理后的數(shù)據(jù)存儲到本地文件或數(shù)據(jù)庫中,供后續(xù)分析使用;最后,爬蟲策略的制定:制定一些爬蟲策略,包括訪問的目標(biāo)網(wǎng)站頻率、爬取深度、爬取規(guī)則等[9]。
1.4 相關(guān)擴(kuò)展庫
XPath拓展庫,這個擴(kuò)展庫的主要功能是用來解析網(wǎng)頁,需要與Requests拓展庫配合使用,進(jìn)而可以實(shí)現(xiàn)從被解析的網(wǎng)頁上抓取數(shù)據(jù)。
Selenium拓展庫,作為一個自動化的Web應(yīng)用測試工具,程序員通常將它用來模擬用戶在瀏覽器中的操作,使程序可以按預(yù)設(shè)的邏輯持續(xù)執(zhí)行。
jieba拓展庫,作為一個中文分詞工具,可以將一段中文文本按照詞語的顆粒度進(jìn)行劃分,將其切分成多個實(shí)意詞。
Pandas拓展庫,作為Python的核心數(shù)據(jù)分析庫,旨在簡單、直觀地處理關(guān)系型、標(biāo)記型數(shù)據(jù),同時還提供了數(shù)據(jù)清洗等功能[10]。
1.5 應(yīng)對反爬蟲技術(shù)
在爬蟲過程中,會對所爬取目標(biāo)網(wǎng)站的服務(wù)器造成資源消耗,降低目標(biāo)網(wǎng)站服務(wù)器的穩(wěn)定性[11],為了更好地進(jìn)行網(wǎng)絡(luò)爬蟲,通常需要先對目標(biāo)網(wǎng)站進(jìn)行分析,進(jìn)而了解其反爬機(jī)制,然后根據(jù)反爬機(jī)制制定相應(yīng)手段[11]。
本研究以豆瓣電影網(wǎng)站為例,該網(wǎng)站運(yùn)用了反爬技術(shù),會對用戶每分鐘的訪問次數(shù)進(jìn)行甄別,當(dāng)識別到非正常訪問時會對相關(guān)用戶進(jìn)行封號處理。應(yīng)對這一反爬蟲措施可在執(zhí)行讀取數(shù)據(jù)的循環(huán)函數(shù)中加入time.sleep()這一命令,使每次執(zhí)行循環(huán)操作后有一定的停頓時間,以此模擬用戶的正常操作。
2 系統(tǒng)方案設(shè)計(jì)
2.1 數(shù)據(jù)來源
本研究使用了豆瓣電影網(wǎng)《孤注一擲》(https://movie.douban.com/subject/35267224//comments?status=P) 的影評數(shù)據(jù)信息,包含的數(shù)據(jù)字段有:用戶名、發(fā)表時間、居住城市、影評評分、影評正文、點(diǎn)贊量[12]。
2.2 步驟設(shè)計(jì)
首先,明確需要爬蟲的目標(biāo)網(wǎng)站;其次,獲取目標(biāo)網(wǎng)站源代碼,并對目標(biāo)網(wǎng)站進(jìn)行解析;再次,獲取所需影評數(shù)據(jù);最后,對影評數(shù)據(jù)進(jìn)行可視化分析[13]。
1) 網(wǎng)頁源碼抓取。首先,打開豆瓣電影網(wǎng)站,找到《孤注一擲》的影評頁面,確定影評網(wǎng)址url為https://movie.douban.com/subject/35267224//comments?status=P,其中的35267224是影片的id,status=P是從該部電影影評的第一頁開始[14]。其次,打開網(wǎng)頁的檢查功能,找到相應(yīng)的User-Agent及cookie所對應(yīng)的內(nèi)容。再次,當(dāng)開始執(zhí)行爬取操作之后會看到網(wǎng)頁開始翻頁,此時網(wǎng)址url有所變化,其后網(wǎng)站鏈接會變?yōu)閟tart=20&limit=20&status=P,其中l(wèi)imit=20是指一頁限制20條影評數(shù)據(jù),start=20是指從第20條數(shù)據(jù)處開始,往后每執(zhí)行一次翻頁操作,start的值都會增加20,由于豆瓣影評網(wǎng)站的限制,所爬取的數(shù)據(jù)量有限,待爬到一定數(shù)據(jù)量后程序?qū)⒆詣咏K止[15]。最后,通過Requests以及XPath拓展庫發(fā)送網(wǎng)絡(luò)請求,查看并獲取所需數(shù)據(jù),再利用Pandas拓展庫讀取數(shù)據(jù),并使用pd.DataFrame()函數(shù)來構(gòu)造新的數(shù)組進(jìn)行分類。
2) 網(wǎng)頁解析。通過上一步操作之后,可以使用XPath拓展庫的方法定位想要爬取的相應(yīng)數(shù)據(jù),特別需要注意的是這里的定位是根據(jù)其HTML層級位置確定的,所以需要能夠準(zhǔn)確找到爬取數(shù)據(jù)的HTML定位。
3) 對所有頁面執(zhí)行爬取操作并保存數(shù)據(jù)。在爬取數(shù)據(jù)時,首先可以使用Selenium拓展庫進(jìn)行虛擬點(diǎn)擊操作,來判斷被訪問的網(wǎng)址是否可以被正常訪問,與此同時也可以判斷當(dāng)前頁面是否存在數(shù)據(jù)。在判斷出當(dāng)前頁面有數(shù)據(jù)后,再使用解析庫lxml從HTML源代碼中提取評論信息。其次,通過解析網(wǎng)頁內(nèi)容獲取dom文件,之后再執(zhí)行判斷語句,判斷是否存在下一頁,如果存在下一頁就繼續(xù)運(yùn)行,執(zhí)行confirm_bnt.click()代碼實(shí)現(xiàn)翻頁操作,如不存在就終止程序。最后,將所爬取的數(shù)據(jù)存入本地CSV文件中。
3 《孤注一擲》電影的數(shù)據(jù)可視化分析
3.1 數(shù)據(jù)預(yù)處理
通過對保存的CSV文件中的原始數(shù)據(jù)進(jìn)行初步檢查,發(fā)現(xiàn)存在缺失值、重復(fù)值等異常數(shù)據(jù)。此時,需要對原始數(shù)據(jù)進(jìn)行預(yù)處理,進(jìn)行糾錯,從而提高數(shù)據(jù)分析的準(zhǔn)確性和可靠性,具體步驟包括:數(shù)據(jù)檢測、審查、處理、校驗(yàn)等步驟來實(shí)現(xiàn)數(shù)據(jù)糾錯,進(jìn)而清除原數(shù)據(jù)中的無用信息[16]。
3.2 數(shù)據(jù)可視化分析
3.2.1 影評文本可視化分析
本研究對所爬取CSV文件中的“影評評分”和“影評正文”兩列數(shù)據(jù)采用詞云圖的方式進(jìn)行文本可視化分析。具體步驟如下:首先,通過“影評評分”列進(jìn)行好評與差評的鑒定,鑒定標(biāo)準(zhǔn)為“好評”大于等于30分,“差評”小于30分;其次,對“影評正文”列進(jìn)行分詞、去除停用詞、使用列表轉(zhuǎn)換字符把數(shù)據(jù)轉(zhuǎn)換成列表、使用Pandas庫中的Series()來轉(zhuǎn)換成序列、value_counts()統(tǒng)計(jì)頻率;最后,使用Matplotlib庫來繪制詞云。
根據(jù)圖2“好評”詞云圖,可以看出關(guān)鍵詞為“現(xiàn)實(shí)”“故事”“角色”“題材”?!豆伦⒁粩S》作為一部具有防詐騙意義的電影,題材新穎,角色和故事刻畫較為清晰?!艾F(xiàn)實(shí)”這個關(guān)鍵詞占比相對較大,可能是因?yàn)橛幸徊糠秩苏J(rèn)為該電影的故事邏輯清晰,具有現(xiàn)實(shí)警醒意義;“題材”這個關(guān)鍵詞較為突顯,從我國受騙人數(shù)和受騙金額來看,該電影屬于現(xiàn)實(shí)主義題材;“角色”詞頻較高,從電影中各類人物角色的演繹可以看出,該電影比較符合現(xiàn)實(shí)情境。
根據(jù)圖3“差評”詞云圖,詞頻較高的是“詐騙”“反詐”“太差”和“宣傳片”。出現(xiàn)上述高頻詞的原因可能是:①部分觀眾認(rèn)為該類電影更多的是起到宣傳警示作用,更適合在受眾面較廣的平臺進(jìn)行播放,而不是在受眾面較小的電影院播放;②少部分觀眾未經(jīng)歷過詐騙事件,所以會質(zhì)疑電影的真實(shí)性,同時,也有少部分觀眾認(rèn)為電影情節(jié)銜接性較差,給觀眾一種“出戲”的感覺,從而給出“太差”的評價。
3.2.2 影評評分、時間評論數(shù)量分析
①《孤注一擲》影評評分餅狀圖分析。本研究采用Matplotlib庫對“影評評分”列進(jìn)行可視化分析,并以餅狀圖的方式進(jìn)行展現(xiàn)。根據(jù)圖4可知好評率為75.44%(評分在三顆星以上且包含三顆星),由此可以看出《孤注一擲》的豆瓣好評率較高,初步判斷大多數(shù)觀眾對《孤注一擲》這部電影持有推薦的態(tài)度[17]。
②《孤注一擲》影評數(shù)量隨時間的變化。根據(jù)圖5可知,《孤注一擲》的影評數(shù)量從2023年7月28日至2023年8月7日總體呈現(xiàn)出增長趨勢,并于2023年8月7日影評數(shù)量達(dá)到最大值,可以看出公眾對該電影期望值較高,可能與前期制片方對該部電影進(jìn)行了大力宣傳和超前點(diǎn)映等工作有關(guān)。《孤注一擲》這部電影在2023年8月8日全國正式上映后,影評數(shù)量總體呈現(xiàn)為下降趨勢,可能是因?yàn)楣娗捌趯υ撾娪暗钠谕颠^高,實(shí)際觀影后未能達(dá)到公眾預(yù)定的期望值,導(dǎo)致影評數(shù)量降低。
③《孤注一擲》影評數(shù)量隨時刻變化分析。由圖6《孤注一擲》影評日平均數(shù)量的時刻變化情況可以看出,該數(shù)據(jù)總體上呈“先上升后下降”的趨勢。從6點(diǎn)至22點(diǎn)總體呈現(xiàn)“上升”趨勢,其中在19點(diǎn)至22點(diǎn)上升幅度較大,可能是因?yàn)檫@個時間段屬于人們的下班時間,因此人們有更多的空閑時間去休閑娛樂。從22點(diǎn)至次日6點(diǎn),總體呈“下降”的趨勢,這可能與人們健康的生活作息規(guī)律有關(guān)。通過上述分析可知,電影院在后期影片播放場次方面,可以結(jié)合人們的休閑時間來調(diào)整播放的場次,以增加電影院的收入。
3.2.3 參評人員的城市分布情況分析
使用Matplotlib擴(kuò)展庫,對參評人員所在地進(jìn)行統(tǒng)計(jì)分析,找出排名前10的城市,并用柱狀圖進(jìn)行展示。由圖7可知,排名前10的城市分別是北京、上海、廣州、杭州、成都、深圳、長沙、武漢、天津、南京。由此可見,排名前10的城市主要集中在經(jīng)濟(jì)比較發(fā)達(dá)的一線城市,可能是因?yàn)殡娪爸破皆谶@些城市進(jìn)行了大力的宣傳,增加了群眾對該電影的期望值。建議后期相關(guān)電影制片方在電影上映前可以在二線、三線城市加大宣傳力度,提高人們對電影的關(guān)注度。
3.2.4 參評人員評分與所在城市分布情況分析
通過對CSV文件中的“影評評分”和“居住城市”兩列中所包含的數(shù)據(jù)進(jìn)行關(guān)聯(lián)分析,找出了排名前10的城市在各個評分等級的數(shù)量。由表2可知,北京市總參評數(shù)量為126人,其中30分及以上分?jǐn)?shù)為87人,好評率為69.04%;上海市總參評數(shù)量為47人,其中30分及以上分?jǐn)?shù)為36人,好評率為76.60%;南京市總參評數(shù)量為8人,其中30分及以上分?jǐn)?shù)為4人,好評率為50.00%。最后,從總體來看排名前10的城市中,好評率達(dá)到總?cè)藬?shù)的73%以上。
4 結(jié)論
本研究以豆瓣電影網(wǎng)站的影評數(shù)據(jù)為數(shù)據(jù)源,使用爬蟲及反爬蟲技術(shù)對《孤注一擲》這一部電影的相關(guān)影評數(shù)據(jù)進(jìn)行了爬取。然后對所爬取的數(shù)據(jù)進(jìn)行預(yù)處理并利用“居住城市”“發(fā)表時間”“影評評分”“影評正文”等字段進(jìn)行可視化分析。由前文的可視化分析結(jié)果得出以下結(jié)論:①《孤注一擲》這部電影好評率較高,是一部展示現(xiàn)實(shí)主義題材且具有防詐騙意義的電影。②部分電影院可以結(jié)合人們的休閑時間來調(diào)整播放的場次,以增加電影院的收入。③城市評分排名前10的城市主要集中在經(jīng)濟(jì)比較發(fā)達(dá)的一線城市,因此,在之后的新電影上映前,電影制片方可以在二線、三線城市加大宣傳力度,進(jìn)而增加票房收入。
參考文獻(xiàn):
[1] 傅海,汪如媛.新世紀(jì)中印票房冠軍電影的海外接受比較研究——基于IMDb與豆瓣網(wǎng)數(shù)據(jù)[J].電影評介,2018(18):5-9.
[2] 搜狐新聞.https://www.sohu.com/a/711631600_121124330.
[3] 杭霞麗,龔小妹.基于4Cs的中國電影市場高票房現(xiàn)象分析[J].河南財(cái)政稅務(wù)高等專科學(xué)校學(xué)報,2018,32(2):23-25.
[4] 賀洪煜.基于Python的科技情報智能化識別檢索系統(tǒng)的研究與設(shè)計(jì)[J].科技視界,2019(11):72-74.
[5] 劉星辰.基于Hadoop的分布式網(wǎng)絡(luò)爬蟲的研究與實(shí)現(xiàn)[D].西安:西安理工大學(xué),2019.
[6] 孫延華.基于大數(shù)據(jù)的高等藝術(shù)院校財(cái)務(wù)信息化建設(shè)有關(guān)對策研究[J].財(cái)會學(xué)習(xí),2017(24):51,53.
[7] 王飛.融合用戶行為分析的微博情感傾向研究[D].濟(jì)南:山東師范大學(xué),2019.
[8] 王慧玲.招聘網(wǎng)站數(shù)據(jù)可視化分析平臺的設(shè)計(jì)與實(shí)現(xiàn)[D].曲阜:曲阜師范大學(xué),2020.
[9] 劉榮,王愛強(qiáng).網(wǎng)絡(luò)爬蟲技術(shù)濫用的刑事責(zé)任[J].中國檢察官,2021(18):28-31.
[10] 李卿.基于Pandas+Python的機(jī)場進(jìn)出場流量和氣象情報統(tǒng)計(jì)系統(tǒng)[J].現(xiàn)代計(jì)算機(jī),2020(9):29-32.
[11] 洪麗華,黃瓊慧.基于Python爬蟲技術(shù)的研究[J].價值工程,2022,41(34):154-156.
[12] 胡亞嬌,劉思維,謝志峰,等.基于多態(tài)信息挖掘的電影用戶畫像研究[J].現(xiàn)代電影技術(shù),2020(6):16-22.
[13] 王志.電影網(wǎng)站數(shù)據(jù)挖掘可視化系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].武漢:華中科技大學(xué),2019.
[14] 裴麗麗.基于Python語言對電影影評數(shù)據(jù)爬蟲與詞云制作[J].信息記錄材料,2020,21(5):116-118.
[15] 胡海潮.基于新浪微博的爬蟲程序設(shè)計(jì)與實(shí)現(xiàn)[J].無線互聯(lián)科技,2018,15(9):40-42.
[16] 張意.基于UWB的隧道結(jié)構(gòu)健康監(jiān)測系統(tǒng)[D].大連:大連理工大學(xué),2018.
[17] 邵小青,賈鈺峰,章蓬偉,等.基于Python影評數(shù)據(jù)挖掘與分析——以《你好,李煥英》為例[J].信息記錄材料,2021,22(10):224-226.
【通聯(lián)編輯:王 力】