成文瑩 李秀敏



摘要:該文借助Python功能完備的標(biāo)準(zhǔn)庫、強(qiáng)大的第三方庫requests、BeautifulSoup以及正則表達(dá)式,編寫程序快速實(shí)現(xiàn)中國票房網(wǎng)頁及豆瓣電影TOP250數(shù)據(jù)的抓取,通過matplotlib圖形庫以圖形化的方式直觀地展示數(shù)據(jù)結(jié)果,并加以分析,得出相關(guān)結(jié)論。該文研究為培養(yǎng)學(xué)生數(shù)據(jù)處理能力和可視化分析能力奠定了基礎(chǔ)。
關(guān)鍵詞:數(shù)據(jù)爬取;Python;可視化
中圖分類號:TP391 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2019)31-0008-03
1背景
隨著大數(shù)據(jù)和人工智能時(shí)代的到來,人們在數(shù)據(jù)的價(jià)值上逐漸取得共識,而獲得數(shù)據(jù)是數(shù)據(jù)挖掘與分析的首要工作。論文利用Python豐富的標(biāo)準(zhǔn)庫,研究網(wǎng)絡(luò)爬蟲的原理并實(shí)現(xiàn)電影網(wǎng)絡(luò)數(shù)據(jù)的獲取,并將獲得的數(shù)據(jù)進(jìn)行可視化顯示和數(shù)據(jù)分析。
Python語法簡潔清晰,易學(xué),可擴(kuò)展性強(qiáng),具有豐富的標(biāo)準(zhǔn)庫和第三方庫供程序員使用。Python爬蟲工具包使用方便,對數(shù)據(jù)抓取提供了可能嘲。
2數(shù)據(jù)爬取與可視化方法分析
網(wǎng)絡(luò)爬蟲是一個從Web上自動下載網(wǎng)頁的計(jì)算機(jī)程序。爬蟲技術(shù)是一個可以連接數(shù)據(jù)和解析數(shù)據(jù),并將這些數(shù)據(jù)進(jìn)行分析并將分析結(jié)果利用圖表進(jìn)行展示的工具。Python具有豐富的網(wǎng)絡(luò)爬蟲模塊,具有很強(qiáng)的可擴(kuò)展性與可嵌人性。
可視化分析可以提高科研人員對數(shù)據(jù)隱藏信息的洞察力??梢暬治鍪且环N綜合利用可視化界面和分析理論來幫助用戶解釋復(fù)雜數(shù)據(jù)的技術(shù)。可視化是用戶與數(shù)據(jù)交互的接口,表現(xiàn)形式通常有直方圖、餅圖、散點(diǎn)圖等。
2.1數(shù)據(jù)采集
數(shù)據(jù)采集的執(zhí)行過程分為:第一,分析網(wǎng)址信息找到網(wǎng)頁頁面并分析網(wǎng)頁源代碼結(jié)構(gòu);第二,根據(jù)網(wǎng)址抓取網(wǎng)頁并將網(wǎng)頁內(nèi)容分離開來;第三,處理數(shù)據(jù)且將抓取后的數(shù)據(jù)寫人到數(shù)據(jù)庫中。上述三步重復(fù)執(zhí)行直至數(shù)據(jù)采集結(jié)束。抓取網(wǎng)頁內(nèi)容,一般有兩種方法,一種是使用python庫,另外一種是使用正則表達(dá)式去提取相關(guān)內(nèi)容。
2.2分析及解析網(wǎng)頁
論文使用Python中的requests庫進(jìn)行數(shù)據(jù)采集。Beautiful-Soup是一個HTML/XML的解析器,來解析URL的文本信息。通過確定每個數(shù)據(jù)對應(yīng)的元素及Class名稱后,使用find,find_all,select等方法進(jìn)行標(biāo)簽的定位,進(jìn)行數(shù)據(jù)提取。
2.3正則表達(dá)式提取數(shù)據(jù)
使用正則表達(dá)式對豆瓣電影TOP250進(jìn)行數(shù)據(jù)采集。正則表達(dá)式(re)可匹配、搜索、替代高級文本模式,并為其他的一些功能提供基礎(chǔ)。正則表達(dá)式描述了字符與字符之間的某一種重復(fù)方式,是由字符以及特殊符號組成的,所以能按照某種已經(jīng)設(shè)定好的模式和有類似特征的字符串集合進(jìn)行匹配,依次讀取每個需要爬取的字段名稱和提取規(guī)則。
2.4數(shù)據(jù)整理
采用Python中的pandas庫對采集到的數(shù)據(jù)進(jìn)行必要的整理,采用mean、loc、sort_values、groupby、merge等方法進(jìn)行數(shù)據(jù)的統(tǒng)計(jì)與處理。將爬取的數(shù)據(jù)組合成DataFrame表格格式。pandas的基本功能是對數(shù)據(jù)進(jìn)行索引查找、過濾和函數(shù)應(yīng)用,除此之外,還有數(shù)據(jù)匯總和統(tǒng)計(jì)等功能,是實(shí)際數(shù)據(jù)分析中應(yīng)用最為廣泛的模塊。
2.5數(shù)據(jù)存儲與可視化輸出
爬蟲獲取的數(shù)據(jù)可以將數(shù)據(jù)存儲為txt、xls、esv格式,也可存儲在數(shù)據(jù)庫中(包括MySQL關(guān)系數(shù)據(jù)庫和MongoDB數(shù)據(jù)庫)。論文數(shù)據(jù)存儲為CSV格式,具有方便導(dǎo)人數(shù)據(jù)庫的特點(diǎn)。除此之外,還可以存儲成pdf格式的文件。然后,采用Python中的matplotlib庫以散點(diǎn)圖、餅狀圖、條形圖等形式進(jìn)行數(shù)據(jù)的可視化輸出。
2.6數(shù)據(jù)結(jié)果分析
對數(shù)據(jù)清洗和預(yù)處理后的票房、評論文本進(jìn)行描述性數(shù)據(jù)統(tǒng)計(jì)分析。
3電影數(shù)據(jù)爬取與分析
3.1提取數(shù)據(jù)
打開中國票房網(wǎng)頁頁面并分析網(wǎng)頁源代碼結(jié)構(gòu)。分析代碼過程中,可利用開發(fā)者工具確定每個數(shù)據(jù)對應(yīng)的元素及Class名稱。例如用語句soup.find_all('table',{id:'tbContent'1},找到表格,id名稱為tbContent。下載并解析中國票房網(wǎng)頁,提取想要的數(shù)據(jù)信息,通過BeautifulSoup庫提取了電影名、電影類型、上映地點(diǎn)以及電影票房并且將每個數(shù)據(jù)用DataFrame放人對應(yīng)列表中,見表1和表2,然后生成數(shù)據(jù)圖,分析數(shù)據(jù)。name,types,place,boxoffices字段分別是電影名,電影類型,上映地點(diǎn),票房。
3.2數(shù)據(jù)分析
從網(wǎng)頁中提取數(shù)據(jù)后,將數(shù)據(jù)保存成csv文件。然后采用Python的統(tǒng)計(jì)方法對數(shù)據(jù)進(jìn)行簡單的統(tǒng)計(jì)和分析。
3.2.1統(tǒng)計(jì)各電影類型在中國電影市場的平均票房
通過groupby方法按照類型分組,統(tǒng)計(jì)相應(yīng)類型電影的總個數(shù)以及各個類型的電影票房的平均數(shù)和總數(shù),并使用mat-plotlib.pyplot庫作條形圖和餅圖,結(jié)果一目了然,見圖3和圖4。
如圖1所示:橫軸為電影類型,從左到右依次為愛情、動畫、動作、劇情、科幻、喜劇,豎軸為票房。從圖中我們不難看出,科幻類型的電影更受人們的青睞,喜劇和動作電影大眾喜歡程度相差不大。
從圖2中我們也可以清楚的看到某種類型的平均電影票數(shù)占總平均票數(shù)的比例。我們不難得出結(jié)論,科幻類型的電影的平均票房占了絕大部分,具體數(shù)值為32.25%。
3.2.2各地區(qū)在中國電影市場上映電影數(shù)量
圖3可以分析出每個地區(qū)在中國電影市場的活躍度,從圖3中可以看出美國在中國電影市場活躍度最高,中國緊迫其后。
3.2.3各個上映地區(qū)在中國電影市場上的平均電影票房數(shù)
同樣,我們通過groupby按照地區(qū)分組,統(tǒng)計(jì)在中國各地區(qū)上映的電影平均票房。如圖4所示:橫軸為地區(qū),豎軸為平均電影票房數(shù)量,從圖4中我們可以分析出人們對各地區(qū)在中國電影市場的認(rèn)可度。從圖4中我們可以直觀地看到中國上映的電影的平均票房數(shù)量最多,這也與國人對國產(chǎn)電影的支持和國產(chǎn)電影類型和數(shù)量在這些年不斷陜速發(fā)展有關(guān)。
3.2.4不同評分電影的數(shù)量
下載并用正則表達(dá)式解析豆瓣TOP250網(wǎng)頁,如圖5所示:橫軸為評分,豎軸為數(shù)量,該圖可表示出豆瓣網(wǎng)前250名電影評分主要分布的范圍,從圖中可以看出,8.7評分的電影數(shù)量最多。評分主要分布中8.5到9.2之間。由此可見,大眾對電影類型喜好雖然不同,但是有一定包容性。
4結(jié)束語
大數(shù)據(jù)時(shí)代下,人類社會的數(shù)據(jù)正以前所未有的速度增長。編寫爬蟲程序獲取到的海量數(shù)據(jù)更為真實(shí)、全面,在信息繁榮的互聯(lián)網(wǎng)時(shí)代更為行之有效。因此編寫爬蟲程序成為大數(shù)據(jù)時(shí)代信息收集的必備技能。
Python作為一門腳本語言,它靈活、易用、易學(xué)、適用場景多,實(shí)現(xiàn)程序快捷便利。課題主要采用Python,結(jié)合正則表達(dá)式、BeautifulSoup等豐富且強(qiáng)大的庫,探討構(gòu)建模塊化的web數(shù)據(jù)采集、Html解析及抓取鏈接數(shù)據(jù)的方法,深入研究爬蟲的基本原理與數(shù)據(jù)挖掘的算法。通過爬蟲獲取的海量信息,我們可以對其進(jìn)行進(jìn)一步的分析:市場預(yù)測、文本分析、機(jī)器學(xué)習(xí)方法等。
對于衛(wèi)生信息化方向的信息管理與信息系統(tǒng)的專業(yè)學(xué)生而言,掌握Python數(shù)據(jù)抓取的方法、熟悉搜索引擎和網(wǎng)絡(luò)爬蟲相關(guān)技術(shù)以及檢索算法,為將來從事數(shù)據(jù)收集與處理的醫(yī)療信息化相關(guān)工作打下良好基礎(chǔ)。