閆語
(武漢輕工大學(xué) 湖北省武漢市 430040)
在互聯(lián)網(wǎng)技術(shù)高速發(fā)展的今天,用戶的集體智慧已經(jīng)在互聯(lián)網(wǎng)上產(chǎn)生了巨大的影響。通過分析用戶的觀影行為、觀后體驗(yàn)以及評價(jià),我們能夠獲得有用的信息,并將其轉(zhuǎn)化為有益的口碑。在社交媒體平臺(tái)上,用戶不僅能夠分享自己的資源,傳播自己的口碑,還能根據(jù)自身喜好對其進(jìn)行評分,以此實(shí)現(xiàn)信息的自動(dòng)分類和查找。
當(dāng)今,由于電影的飛速發(fā)展,消費(fèi)者的反饋和建議已經(jīng)變得極具影響力,他們的影響力遠(yuǎn)超產(chǎn)品的實(shí)際性能。因此,我們應(yīng)該認(rèn)真考慮,如何更好地滿足消費(fèi)者的需求,以及更有效地實(shí)現(xiàn)全球化的出版目標(biāo)。隨著Web2.0 的出現(xiàn),中國的互聯(lián)網(wǎng)技術(shù)取得了長足的進(jìn)步。因此,建立一個(gè)完善的、可靠的電影影響評估機(jī)制,將為中國的電影產(chǎn)業(yè)的可持續(xù)發(fā)展提供重要的支持。
觀影系統(tǒng)旨在滿足客戶需求,界面設(shè)置需要簡單易懂,能將電影的觀看情況進(jìn)行分類和歸檔,并且可以根據(jù)不同的需求來調(diào)整功能,支持新增的電影,根據(jù)顧客描述關(guān)鍵信息查詢目標(biāo)電影。設(shè)置安全協(xié)議保護(hù)系統(tǒng)的正常運(yùn)作,同時(shí)利用網(wǎng)站的使用情況來收集顧客的個(gè)人信息,依此做出判斷向用戶發(fā)送指定的消息。
1.2.1 技術(shù)可行性
如今設(shè)計(jì)一個(gè)基于網(wǎng)絡(luò)爬蟲的觀影系統(tǒng)其實(shí)并沒有什么門檻,現(xiàn)在互聯(lián)網(wǎng)的軟件功能強(qiáng)大,對硬件性能價(jià)格都屬于門檻很低的要求。
1.2.2 經(jīng)濟(jì)可行性
電影的觀影系統(tǒng)對網(wǎng)站推廣電影增加流量收入以及滿足顧客需求都具有極大的商業(yè)價(jià)值,具有較為廣闊的市場,因此在經(jīng)濟(jì)方面是有意義的。
2.1.1 網(wǎng)絡(luò)爬蟲模型分析
通常將網(wǎng)絡(luò)爬蟲的組成模塊主要分為初始鏈接庫、網(wǎng)絡(luò)抓取模塊、網(wǎng)頁處理模塊、網(wǎng)頁解析模塊、DNS模塊、待抓取鏈接隊(duì)列、網(wǎng)頁庫等。
2.1.2 網(wǎng)絡(luò)爬蟲搜索策略
主要介紹兩種爬蟲搜索策略:廣度(寬度)優(yōu)先算法和深度優(yōu)先算法。廣度優(yōu)先算法典型應(yīng)用就是單源最短路徑算法和最小生成樹算法。用樹狀圖解釋如圖1,A-G 各點(diǎn)所代表的是不同的層級的鏈接,廣度優(yōu)先級訪問順序?yàn)锳>BC>DEF>G,因?yàn)閺V度優(yōu)先級優(yōu)先抓取低層級的鏈接,并且這種同層抓取,能有效避免深度“黑洞”無法爬取的問題。深度優(yōu)先級訪問順序則為ABD>EG>CF,由于這種方法會(huì)優(yōu)先訪問最底層鏈接,容易陷入“黑洞”問題,爬取效率低,所以一般都是優(yōu)先使用廣度優(yōu)先級策略
圖1:鏈接樹圖
2.1.3 網(wǎng)絡(luò)爬蟲的主題相關(guān)度判斷
根據(jù)其組織架構(gòu)及其執(zhí)行方式,網(wǎng)絡(luò)爬蟲被劃分為通用網(wǎng)絡(luò)爬蟲和聚焦網(wǎng)絡(luò)爬蟲。通用網(wǎng)絡(luò)爬蟲無差別抓取,效率較低。而聚焦網(wǎng)絡(luò)爬蟲抓取頁面需要符合一些要求,對頁面領(lǐng)域內(nèi)的信息進(jìn)行篩選,效率與精確度都高于通用網(wǎng)絡(luò)爬蟲。因此主要介紹聚焦網(wǎng)絡(luò)爬蟲。聚焦網(wǎng)絡(luò)爬蟲在抓取頁面過程中需要頁面分析,進(jìn)而進(jìn)行主題相關(guān)度計(jì)算,只有相關(guān)鏈接才會(huì)加入后續(xù)隊(duì)列。聚焦網(wǎng)絡(luò)爬蟲工作流程為:開始→初始鏈接→鏈接隊(duì)列→抓取鏈接→提取鏈接→根據(jù)算法評價(jià)頁面和鏈接,如果符合要求則結(jié)束并輸出結(jié)果,如果不符合,則返回鏈接隊(duì)列重新篩選。
聚焦爬蟲主要用于篩選信息的三個(gè)模塊為:1.交付判斷頁面信息描述。2.判斷頁面主題相關(guān)度算法。3.如何選取待爬取鏈接。
由于連接評價(jià)模塊的評估內(nèi)容和鏈接分析方法的差異,最終得出結(jié)果相關(guān)度也會(huì)有所不同,從而影響爬取的頁面集。因此主題相關(guān)度計(jì)算算法對爬取成功至關(guān)重要。
獲取到HTML 文檔后,可使用Python 的e 模塊對數(shù)據(jù)進(jìn)行匹配和獲取,將文檔暫存為一個(gè)字符串變量。Colnpile函數(shù)的作用是將正則表達(dá)式的模式編譯成對象,可用于其他匹配函數(shù)的參數(shù),以獲得與該正則表達(dá)式相匹配的數(shù)據(jù)。
本設(shè)計(jì)通過使用一個(gè)爬蟲程序當(dāng)當(dāng)網(wǎng)的HTML 文檔中提取整本書信息的正則表達(dá)式,以此作為參數(shù)返回正則表達(dá)對象,并且通過調(diào)用findall()函數(shù)以整個(gè)網(wǎng)頁的文本信息為參數(shù),返回列表,設(shè)計(jì)循環(huán)結(jié)構(gòu)提取每本書的數(shù)據(jù),具體信息用正則表達(dá)式來匹配。findall()函數(shù)的執(zhí)行方式如下:
datapatte:n=:e.compile(match[‘onebook,’],re.DOTALL)
dataTuPle-datapatte:n.findall(data)
通過使用datapatte:n,我們可以從數(shù)據(jù)庫中獲得一組正則表達(dá)式,其中match[’onebook’]可以被用來調(diào)用findall()。
通過匹配,我們可以將相關(guān)信息存儲(chǔ)在數(shù)據(jù)庫dataTuPle 中,每個(gè)元素都可以被看作是一個(gè)元組。
re 模塊的search 函數(shù)可以幫助我們快速地搜索出符合正則表達(dá)式的匹配信息,其調(diào)用方法為re.search(pattern,string,flags=0),該函數(shù)可以根據(jù)c 桉樹string 的字符串,搜索出符合pattern 的子字符串,返回對應(yīng)的對象,若未能發(fā)現(xiàn),將返回一個(gè)空值,以此作為結(jié)束搜索的依據(jù)。該對象還需轉(zhuǎn)化為字符串形式可以利用group(0)函數(shù),用‘.’連用函數(shù)。當(dāng)search 函數(shù)檢測結(jié)果顯示為零,而group 函數(shù)產(chǎn)生錯(cuò)誤,此時(shí),應(yīng)該采用try/except 的特殊處置措施,來解決這種問題。re.search()函數(shù)在程序中的實(shí)際應(yīng)用是:
通過將
“get_title=re.search"get_title=re.search(match['title'],each,re.DOTALL).group(0)match['title']存儲(chǔ)正砸表達(dá)式,其中‘each 代表著一個(gè)完全可以用于識(shí)別文章的詞語,而’re.DOTALL ‘的設(shè)置可以有效地避免‘.’的拼寫錯(cuò)誤。
re 模塊的 sub 函數(shù)可以通過re.sub(pattern,repl,string,count=0,flags=0)來實(shí)現(xiàn),其功能是從string 中提取出與正則表達(dá)式 pattern 相關(guān)的數(shù)據(jù),然后通過用repl 替換pattern 的參數(shù)信息, count 和flags 的值都設(shè)置為0。 python 擁有內(nèi)置函數(shù)replace(),與 sub 函數(shù)類似,可以替換字符串中的字符。re.sub()與replace 的應(yīng)用場景可以通過以下方式來展示:
data=data.replace('/','')data=re.sub(r's{2,}','',data,flags=re.IGNORECASE)
replace()函數(shù)被應(yīng)用到首個(gè)字符串,它能夠去掉data 中的左斜杠;而re.sub()則能夠?qū)ata 字符串中長度大于等于2 的空格或者換行替換成空格字符,以此來消除字符串中不必要的字符。調(diào)整參數(shù)flags=re.IGNORECASE 來忽略字母的大小寫。
通過使用soup.find_all(‘table',{'id':'tbContent'}),我們能夠查看中國票房的源代碼,從而更好地了解其內(nèi)容。使用開發(fā)者工具來識(shí)別出各種不同的參數(shù),以便更好地理解其相關(guān)的Class。我們使用BeautifulSoup 進(jìn)行了搜索,把所有的資料都添加到DataFrame 的列表里。最終,我們創(chuàng)建了一張數(shù)據(jù)圖,進(jìn)行了深度的研究。電影的名稱、類型、上映地點(diǎn)和票房都由name、types、place 和boxoffices 字段來表示。
通過使用Python 的統(tǒng)計(jì)方法,我們可以從網(wǎng)頁上提取大量的數(shù)據(jù),并將其轉(zhuǎn)換為csv 文件,以便進(jìn)行更加深入的統(tǒng)計(jì)分析。
3.2.1 統(tǒng)計(jì)中國電影市場中不同類型電影的平均收入情況
采用groupby 技術(shù)將不同類別的電影進(jìn)行歸納,統(tǒng)計(jì)出每種類別的電影的數(shù)量以及票房情況,最后,利用mat-plotlib.pyplot 庫繪制出條狀圖和餅狀圖。
如圖2所示:橫軸為電影類型,從左到右依次為愛情、動(dòng)畫、動(dòng)作、劇情、科幻、喜劇,豎軸為票房。
圖2:票房分布
圖3:可以看出科幻電影(粉色扇狀區(qū)域)的平均票房占了絕大部分,具體數(shù)值為32.25%
圖3:題材分布
3.2.2 中國電影市場上,來自不同地區(qū)的電影數(shù)量有所差異
根據(jù)圖4,我們發(fā)現(xiàn)美國的電影市場表現(xiàn)優(yōu)異,其次是中國。這表明,不同的國家和地區(qū)都有不同的發(fā)展?jié)摿Α?/p>
圖4:地區(qū)分布
3.2.3 通過使用正則表達(dá)式,我們可以下載4 部不同評分的電影
愛奇藝TOP250 網(wǎng)頁,如圖5所示。
圖5:不同評分區(qū)間電影分布
通過對愛奇藝網(wǎng)前250 名電影的評分進(jìn)行統(tǒng)計(jì),我們發(fā)現(xiàn),8.7 分的電影數(shù)量最多。這表明,盡管人們對電影的喜好各不相同,但他們都具有一定的包容性。在這些電影中,8.5 分和9.2 分的分布比較集中。
大數(shù)據(jù)時(shí)代的來臨,允許人們從無限的可用資源中提煉出寶貴的知識(shí)和經(jīng)驗(yàn)。而使用爬蟲算法來搜索、分析和處理這些資源,可以讓我們的工作變得更加高效、準(zhǔn)確,從而滿足當(dāng)今信息爆炸的需求。
Python 是一種非常有效的腳本編寫工具,具有高度的可擴(kuò)展性和可操縱性,可以應(yīng)對各種復(fù)雜的環(huán)境。在這項(xiàng)研究中,我們將使用Python,并配備一些功能齊全的庫,如BeautifulSoup,來支持我們對Web 和Html 的各種數(shù)據(jù)進(jìn)行分類和處理。我們還將進(jìn)一步探索如何使用Python 來進(jìn)行爬蟲和統(tǒng)計(jì)分類。利用爬蟲技術(shù)收集的大量數(shù)據(jù)分析,我們能夠運(yùn)用多種方法,如市場趨勢、數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí)技術(shù),來研究和解決問題。
學(xué)習(xí)數(shù)據(jù)科學(xué)與大數(shù)據(jù)技術(shù)的專業(yè)學(xué)生,應(yīng)該掌握Python 數(shù)據(jù)抓取的技巧,熟練使用搜索引擎、網(wǎng)絡(luò)爬蟲等技術(shù),并且能夠熟練運(yùn)用檢索算法,這將為他們未來在觀影大數(shù)據(jù)領(lǐng)域的數(shù)據(jù)收集、處理和分析工作奠定堅(jiān)實(shí)的基礎(chǔ)。