李海榮 徐圣方 蔣晨曦 諶詩坤 耿一蕊
摘要:在電影業快速發展的今天,越來越多的人喜歡在觀影后,通過評論的方式在網絡上留下自己的感悟。研究首先采用爬蟲及反爬蟲技術,獲取豆瓣熱度較高的電影《孤注一擲》的影評數據;其次,使用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.
【通聯編輯:王 力】