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