方子菱 匡芳君*
(溫州商學院信息工程學院, 浙江 溫州 325035)
在互聯網信息時代,人們對于信息的搜集越發高要求化。大家都希望能通過越來越短的時間去盡可能地搜集到更全面更清晰的數據信息,以便為后期數據分析提供高質量的基礎數據,從而應對市場客戶的需求和市場行情的飛速變化。基于Python的數據爬蟲技術是目前使用認知度最高的方法之一,它能夠以最快捷的方式最全面地反饋出一個網站或是APP等的用戶體驗數據,達到數據收集者的可閱讀要求。獲取數據的背后自然離不開一個強大的開發庫,而Python擁有的標準庫,提供了系統管理、網絡通信、文本處理、數據庫接口、圖形系統、XML處理等額外的功能。同時Python社區提供了大量的第三方模塊,使用方式與標準庫類似。它們的功能覆蓋科學計算、Web開發、數據庫接口、圖形系統等多個領域,并且大多成熟而穩定。基于這些條件和技術,使用者便可以輕松地洞察市場的發展行情,及時做出調整,彌補不足,最高效地達到客戶需求,同時也方便個人信息統計和數據分析。為了能直觀地展示民謠歌手的情緒、歌詞詞頻統計以及歌手對時光和城市的偏愛程度,本文利用Python語言的大數據收集和分析能力,通過分析網易云民謠top10歌手的作品來探索歌手所感受到的社會信息。
Python是一種面向對象的解釋型計算機程序設計語言,源代碼和解釋器CPython遵循GPL協議。作為實用開發一般使用Python快速生成程序的原型,然后對其中有特別要求的部分,再用更合適的語言改寫,比如3D游戲中的圖形渲染模塊,性能要求特別高,就可以用C/C++重寫,而后封裝為Python可以調用的擴展類庫[1]。Python語言中強大的庫讓其可以處理各種工作[2],包括正則表達式、文檔生成、單元測試、線程、數據庫、網頁瀏覽器、CGI、FTP、電子郵件、XML、HTML、WAV文件和其他與系統有關的操作。它有多種編程方式,如利用系統編程提供API,能方便進行系統維護和管理;也能利用數據庫編程,使程序員通過遵循Python DB-API規范 的 模 塊 與 Microsoft SQL Server、Oracle,Sybase,DB2,MySQL、SQLite等數據庫通信。因此,本文主要利用Python語言Beautiful Soup API接口和Snow NLP、jieba等類庫對文段歌詞中的內容進行詞性標注、分詞、重點摘取,以獲得所需數據集,從而對網易民謠歌詞進行數據分析。
信息化的數據來源多樣化,包括站內的統計工具、搜索引擎搜索結果、行業大數據、運營數據以及使用最頻繁的web日志數據,而這些數據卻以各種格式數據文件呈現,需要利用Python爬蟲技術將搜索引擎數據、應用APP和網頁中的html文檔之間的鏈接關系進行關聯和采集[3],從而獲取現有數據,或者是通過網站的編程接口(API)進行數據的抓取和收集。
爬蟲是指向網站發起請求,獲取資源后分析并提取有用數據的程序;從技術層面來說就是通過程序模擬瀏覽器請求站點的行為,把站點返回的HTML代碼/JSON數據/二進制數據(圖片、視頻)爬到本地,進而提取自己需要的數據,存放起來使用[4,5],數據爬取步驟如圖1所示。由于本文主要是獲取網易云音樂民謠的所有歌曲,因此網易民謠歌詞數據獲取流程圖如圖2所示。

圖1 數據爬取步驟

圖2 網易民謠歌詞數據獲取流程圖
(1)目標確定和分析
網易歌曲鏈接地址為:https://music.163.com/discover/playlist/?cat=%E6%B0%91%E8%B0%A3&order=hot,在此鏈接地址Response中可以看到源代碼以及頁面的具體信息,通過在Headers里可以看到request URL,從而利用URL的地址鏈接進行接下來的信息采集。

圖3 數據源代碼
(2)編寫python爬蟲代碼
首先在下載網頁內容前,需要進行download代碼封裝,進而對下載的信息有了安全性和隱蔽性的保障,限制了一定的訪問者,必要地要通過接口才可進行訪問,關鍵代碼如下:

繼而在解析網頁內容時,需要使用第三方插件Beautiful Soup API,關鍵代碼如下:

(3)執行爬蟲
整個爬蟲爬取信息的重點即是通過get_music()方法獲取top10的歌手以及歌詞內容并保存到TXT文件中,關鍵代碼如下:

通過執行爬蟲代碼爬取網址鏈接到的網頁內容,并保存到設置途徑的集合中去,最終整理匯總后的數據集如圖4所示。

圖4 獲取的數據集
本節運用Python類庫(SnowNLP)對民謠top10歌手的歌詞文本進行情緒分析,關鍵代碼如下:

運用SnowNLP后對top10民謠歌手的歌詞進行情感分析,得到的民謠歌手情緒統計圖如圖5所示。從圖5可以看出,近期的民謠歌手們情緒都比較高漲,似乎都在通過歌詞里的詞頻向大家展示他們所感受到的社會信息。

圖5 民謠歌手情緒統計圖
為了讓數據分析出來更加直觀清晰,首先運用jieba庫進行分詞和詞頻統計分析,得到歌詞中詞頻統計信息,歌詞詞頻統計關鍵代碼如下:

然后,通過詞頻統計后將數據導入到Excel表格中,統計結果如圖6所示。

圖6 詞頻數據統計圖
最后,利用詞云的可視化功能將歌詞詞頻以更具視覺效果方式展示,如圖7所示。

圖7 詞云可視圖
通過詞頻的統計和分析,可以發現這些民謠歌手會因為生活中的一系列變化,而改變他們的曲調辭藻;常常提及時光、南方、家、背離,他們用歌曲表達情感,而這里運用數據精確分析報告歌手們的情感,使他們的表達更加直接集中。為了能夠讓讀者更進一步地體會這些民謠歌者的內心與喜好,又通過詞頻分析他們到底是偏愛什么時光以及城市,得到民謠歌手偏愛的時光和喜愛的城市統計圖,如圖8和圖9所示。
從圖8時光數據分析圖可以看出,民謠歌者們更喜愛今天,喜歡當下能把握的時光與生活,珍惜眼前。從圖9喜愛的城市分析圖可以看出,如今最熱門、最招人喜愛的城市莫過于北京和成都兩地。

圖8 民謠歌手偏愛的時光

圖9 民謠歌手喜愛的城市
本文利用Python語言和數據分析技術對網易民謠歌詞進行數據分析,首先通過使用基于Python的爬蟲技術獲取網易民謠歌詞相關信息,然后利用Python類庫SnowNLP和jieba以及詞云可視化對網易民謠歌詞挖掘有價值的信息并進行可視化展示。下一步工作將重點針對流動性的動態數據爬取,考慮數據獲取的質量和安全性,以及如何在短時間獲取單個客戶端動態使用數據,并保證數據真實、安全、可靠。
[1]夏火松,李保國.基于Python的動態網頁評價爬蟲算法[J].軟件工程,2016,19(2):43-46.
[2]周中華,張惠然,謝江.基于Python的新浪微博數據爬蟲[J]. 計算機應用,2014,34(11):3131-3134.
[3]陳琳,任芳.基于Python的新浪微博數據爬蟲程序設計[J].信息系統工程,2016(9):97-99.
[4]郭麗蓉.基于Python的網絡爬蟲程序設計[J].電子技術與軟件工程,2017(23):248-249.
[5]熊暢.基于Python爬蟲技術的網頁數據抓取與分析研究[J].數字技術與應用,2017(9):35-36.
[6]嚴婷,文欣秀,趙嘉豪,等.基于Python的可視化數據分析平臺設計與實現[J].計算機時代,2017,(12):54-56.