




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
目錄
1引言............................................................................................................................1
1.1項(xiàng)目背景......................................................................................................1
1.2開(kāi)發(fā)環(huán)境與工具..........................................................................................2
1.2.1Python簡(jiǎn)介..........................................................................................2
1.2.2MySQL簡(jiǎn)介............................................................................................3
1.2.3JupyterNotebook簡(jiǎn)介......................................................................3
1.2.4PyCharm簡(jiǎn)介........................................................................................4
2需求分析....................................................................................................................5
2.1可行性需求分析..........................................................................................5
2.2采集目標(biāo)功能分析......................................................................................6
2.3關(guān)鍵技術(shù)分析..............................................................................................6
2.3.1網(wǎng)絡(luò)爬蟲(chóng)技術(shù).......................................................................................6
2.3.2文件存取技術(shù).......................................................................................8
2.3.3可視化技術(shù)...........................................................................................9
3數(shù)據(jù)采集..................................................................................................................10
3.1采集頁(yè)面分析............................................................................................10
3.2字段分析....................................................................................................15
3.3編程實(shí)現(xiàn)....................................................................................................16
4數(shù)據(jù)清洗與處理......................................................................................................18
4.1數(shù)據(jù)清洗....................................................................................................18
4.2數(shù)據(jù)儲(chǔ)存....................................................................................................21
4.3編程實(shí)現(xiàn)....................................................................................................22
5數(shù)據(jù)統(tǒng)計(jì)與分析......................................................................................................23
5.1數(shù)據(jù)準(zhǔn)備....................................................................................................23
5.2數(shù)據(jù)展示....................................................................................................25
5.2.1依據(jù)專輯進(jìn)行統(tǒng)計(jì).............................................................................25
5.2.2依據(jù)標(biāo)簽類型進(jìn)行統(tǒng)計(jì).....................................................................26
I
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
5.2.3根據(jù)歌手上榜的歌曲量統(tǒng)計(jì)和分析.................................................27
5.3綜述............................................................................................................28
6小結(jié)..........................................................................................................................29
參考資料.........................................................................................................................30
II
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
基于Python的咪咕音樂(lè)網(wǎng)站數(shù)據(jù)采集與分析
1引言
在當(dāng)今時(shí)代背景下,大數(shù)據(jù)與人工智能等計(jì)算機(jī)互聯(lián)網(wǎng)技術(shù)在為百姓民生
的各個(gè)方面提供了智能生活的技術(shù)基礎(chǔ)。
衣食住行、吃喝玩樂(lè)等方面產(chǎn)生的海量數(shù)據(jù)等待開(kāi)發(fā)的價(jià)值愈來(lái)愈大,而
當(dāng)今這代人正處于這數(shù)據(jù)時(shí)代的狂潮中,抓住其中的機(jī)遇,便有飛黃騰達(dá)的機(jī)
會(huì)。
音樂(lè)領(lǐng)域產(chǎn)生的數(shù)據(jù)價(jià)值同樣具備如此,它作為一種文化藝術(shù)形式,在全
球范圍內(nèi)一直在不斷發(fā)展和演變。全球化和跨文化交流的增加,使得音樂(lè)風(fēng)格
越來(lái)越多樣化和包容性。人們對(duì)不同文化、民族和性別的音樂(lè)越來(lái)越包容和欣
賞,這也使得更多的音樂(lè)類型和藝術(shù)家能夠脫穎而出。
隨著數(shù)字技術(shù)的發(fā)展,音樂(lè)的傳播和消費(fèi)方式也發(fā)生了巨大的變化。流媒
體服務(wù)的興起使得音樂(lè)更加方便和易于獲取,同時(shí)也使得音樂(lè)產(chǎn)業(yè)的商業(yè)模式
發(fā)生了變化。音樂(lè)和其他藝術(shù)形式的跨領(lǐng)域合作越來(lái)越普遍。比如,音樂(lè)和電
影、游戲、時(shí)尚等領(lǐng)域的結(jié)合,創(chuàng)造出了更加豐富和有趣的作品。
總的來(lái)說(shuō),音樂(lè)發(fā)展的現(xiàn)狀和趨勢(shì)是多樣性、數(shù)字化、跨界合作、可持續(xù)
發(fā)展和社交媒體化。隨著技術(shù)的不斷發(fā)展和人們對(duì)音樂(lè)的需求不斷變化,音樂(lè)
產(chǎn)業(yè)也將繼續(xù)不斷創(chuàng)新和發(fā)展。因此,音樂(lè)領(lǐng)域所產(chǎn)生的數(shù)據(jù)價(jià)值也越來(lái)越不
可忽視。
1.1項(xiàng)目背景
隨著網(wǎng)絡(luò)技術(shù)的進(jìn)步,人們不僅能夠通過(guò)網(wǎng)絡(luò)學(xué)習(xí),還能夠享受各種附帶
產(chǎn)品的好處,諸如網(wǎng)絡(luò)音樂(lè)和游戲和小說(shuō)等等。
越來(lái)越多的人選擇在網(wǎng)上聽(tīng)音樂(lè)、下載音樂(lè)。因此,了解音樂(lè)的流行程度
和市場(chǎng)趨勢(shì)就變得尤為重要。對(duì)于一家音樂(lè)公司而言,需要將音樂(lè)網(wǎng)站中產(chǎn)生
的數(shù)據(jù)價(jià)值挖掘出來(lái),為公司的發(fā)展帶來(lái)更多的利益空間。那么,就需要對(duì)自
己運(yùn)營(yíng)的音樂(lè)網(wǎng)站爬取統(tǒng)計(jì)出有用的信息,而爬取音樂(lè)排行榜網(wǎng)站數(shù)據(jù)是數(shù)據(jù)
挖掘技術(shù)在實(shí)際中的應(yīng)用。
因此,在這樣一個(gè)背景下,爬取音樂(lè)排行榜網(wǎng)站數(shù)據(jù)并做出分析對(duì)于用戶
和企業(yè)都有巨大的價(jià)值。它可以幫助用戶快速得到最新、最熱門(mén)的歌曲信息,
1
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
并且基于數(shù)據(jù)分析和推薦算法來(lái)為用戶提供針對(duì)性和個(gè)性化的推薦服務(wù)。對(duì)于
商業(yè)公司而言,也能夠通過(guò)對(duì)用戶口味和偏好進(jìn)行深入分析,為公司提供更加
精細(xì)化的市場(chǎng)調(diào)研和宣傳方案。
爬取音樂(lè)排行榜網(wǎng)站數(shù)據(jù)還可以具有學(xué)術(shù)研究?jī)r(jià)值。比如可以研究某段時(shí)
間內(nèi)不同地區(qū)或群體喜歡哪些類型、風(fēng)格、歌手的音樂(lè),從中發(fā)現(xiàn)一些文化現(xiàn)
象并進(jìn)行深入思考。
本次畢業(yè)設(shè)計(jì)就是獲取咪咕音樂(lè)網(wǎng)站的音樂(lè)排行榜中的歌曲信息,以下是
爬取歌曲信息并對(duì)數(shù)據(jù)進(jìn)行處理和可視化的操作步驟。
首先對(duì)大型咪咕音樂(lè)網(wǎng)站排行榜的網(wǎng)頁(yè)源代碼進(jìn)行網(wǎng)頁(yè)解析,然后爬取歌
曲的網(wǎng)址后,再對(duì)歌曲地址進(jìn)行一次網(wǎng)頁(yè)解析后獲取詳細(xì)的歌曲信息。接下來(lái),
將爬取得到的歌曲數(shù)據(jù)進(jìn)行數(shù)據(jù)清洗和分析,保證數(shù)據(jù)的完整性和準(zhǔn)確性。最
后再采取可視化技術(shù)將處理后的數(shù)據(jù)用圖表的形式展示,得到相應(yīng)的數(shù)據(jù)信息
結(jié)論。
1.2開(kāi)發(fā)環(huán)境與工具
1.2.1Python簡(jiǎn)介
Python是由荷蘭數(shù)學(xué)家和計(jì)算機(jī)科學(xué)研究學(xué)會(huì)的吉多·范羅蘇姆在20世
紀(jì)90年代初設(shè)計(jì)開(kāi)發(fā)的一種解釋型編程語(yǔ)言。
Python語(yǔ)言最大的特點(diǎn)就是簡(jiǎn)單,語(yǔ)法簡(jiǎn)潔明了,初學(xué)者也容易掌握。相
較于其他編程語(yǔ)言,Python實(shí)現(xiàn)同一功能的代碼通常最短,而且Python的第三
方庫(kù)足夠豐富、免費(fèi)開(kāi)源、支持跨多平臺(tái)且可移植性強(qiáng)。
Python可以用于編寫(xiě)網(wǎng)絡(luò)爬蟲(chóng),從而可以爬取咪咕音樂(lè)網(wǎng)站排行榜的歌單
數(shù)據(jù)信息。具體地說(shuō),可以使用Python中的第三方庫(kù)(例如requests、re、etree
等)來(lái)模擬瀏覽器請(qǐng)求數(shù)據(jù),然后解析HTML或XML文件,提取出排行榜相關(guān)的
信息。
以咪咕音樂(lè)排行榜網(wǎng)站為例,可以使用requests、正則表達(dá)式和Xpath庫(kù)
向網(wǎng)頁(yè)發(fā)送請(qǐng)求并解析HTML內(nèi)容,在解析過(guò)程中篩選出有用的信息,如歌單網(wǎng)
址、歌曲名稱、歌手、歌曲專輯等等。通過(guò)分析網(wǎng)頁(yè)源代碼,可以發(fā)現(xiàn)音樂(lè)排
行榜數(shù)據(jù)存儲(chǔ)在特定的URL上,因此只需要構(gòu)造相應(yīng)的URL并發(fā)送請(qǐng)求即可獲
取大量排行榜數(shù)據(jù)。
總的來(lái)說(shuō),Python作為一種通用編程語(yǔ)言,在網(wǎng)絡(luò)爬蟲(chóng)領(lǐng)域有著廣泛的應(yīng)
用。利用Python網(wǎng)絡(luò)爬蟲(chóng)具有高效、便捷和靈活性強(qiáng)等優(yōu)點(diǎn),還能支持多種數(shù)
2
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
據(jù)存儲(chǔ)格式(如文本文件、數(shù)據(jù)庫(kù)等)。
同時(shí),Python還包含大量的第三方庫(kù),以下是本次畢業(yè)設(shè)計(jì)所涉及到的相
關(guān)庫(kù)介紹。
(1).Requests:HTTP協(xié)議訪問(wèn)及網(wǎng)絡(luò)爬蟲(chóng)庫(kù),比urllib使用更簡(jiǎn)潔。
(2).Re:正則表達(dá)式解析和處理功能庫(kù),里面包含了多種字符串匹配的方
法。
(3).Csv:csv屬于python中的內(nèi)置模塊,它能夠讀取csv格式的文件或者
將數(shù)據(jù)存入到csv表格中,也能讀取txt格式文件或者將數(shù)據(jù)存入到txt表格
中。
(4).NumPy:處理數(shù)據(jù)類型相同的多維數(shù)組庫(kù),NumPy庫(kù)的數(shù)據(jù)結(jié)構(gòu)比
Python自帶的更加高效。
(5).Pandas:基于NumPy的Python數(shù)據(jù)分析高層次應(yīng)用庫(kù)。提供了易用的
數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)分析工具,操作索引即操作數(shù)據(jù)。
(6).Matplotlib:繪圖庫(kù),主要是偏向于二維繪圖包括折線圖、條形圖、
扇形圖、散點(diǎn)圖、直方圖等等。
1.2.2MySQL簡(jiǎn)介
MySQL是一款由瑞典MySQLAB公司研發(fā)的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),現(xiàn)屬于
Oracle旗下產(chǎn)品,標(biāo)志為海豚,象征其讀寫(xiě)速度快、準(zhǔn)確無(wú)誤。
相較于儲(chǔ)存所有數(shù)據(jù)于同一倉(cāng)庫(kù)內(nèi),MySQL采用關(guān)系型儲(chǔ)存方式,將數(shù)據(jù)分
散至不同表中,提高了速度和靈活性。其安全、高效且與多款主流計(jì)算機(jī)語(yǔ)言
高度兼容,是當(dāng)前最受歡迎的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)之一。除此之外,其開(kāi)放
源碼的特點(diǎn)也使得中小型和大型網(wǎng)站廣泛采用。
MySQL可以用來(lái)存儲(chǔ)和處理大量的結(jié)構(gòu)化數(shù)據(jù),而本次畢業(yè)設(shè)計(jì)爬取的咪咕
音樂(lè)網(wǎng)站排行榜歌曲數(shù)據(jù)就是大量的結(jié)構(gòu)化數(shù)據(jù),所以這也是選擇它作為數(shù)據(jù)
存儲(chǔ)的理由。
MySQL除了存儲(chǔ)功能,還可以用于查詢、更新和刪除數(shù)據(jù)等操作。因此,可
以通過(guò)SQL語(yǔ)句將存儲(chǔ)到MySQL數(shù)據(jù)庫(kù)的歌單數(shù)據(jù)進(jìn)行高效、靈活和精確的查
詢和分析,從而快速了解用戶需求和流行趨勢(shì),并做出相應(yīng)的決策。
1.2.3JupyterNotebook簡(jiǎn)介
JupyterNotebook是一款兼容性強(qiáng)的基于Web的開(kāi)源應(yīng)用軟件,它的文本
和代碼編輯功能非常強(qiáng)大且交互性良好。無(wú)論是進(jìn)行數(shù)據(jù)分析還是邏輯整理,
3
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
使用JupyterNotebook都能事半功倍。它不僅支持Python,還支持其他40多
種編程語(yǔ)言,并繼承了IPython的所有優(yōu)點(diǎn)。
正是因?yàn)檫@些特性,讓JupyterNotebook在機(jī)械學(xué)習(xí),數(shù)據(jù)清洗、數(shù)據(jù)分
析、數(shù)據(jù)挖掘等領(lǐng)域得到眾多程序員的喜愛(ài)。對(duì)于初學(xué)者來(lái)說(shuō)安裝Jupyter
Notebook的方法就是安裝Anaconda。因?yàn)锳naconda是免費(fèi)的,可以輕松地完
成該軟件的下載和安裝。
JupyterNotebook具備交互式計(jì)算環(huán)境,它可以讓用戶在瀏覽器中編寫(xiě)、
運(yùn)行和共享代碼。使用JupyterNotebook對(duì)爬取音樂(lè)網(wǎng)站排行榜的數(shù)據(jù)進(jìn)行數(shù)
據(jù)清洗主要具備以下優(yōu)勢(shì)。
(1).JupyterNotebook支持Python語(yǔ)言,而Python是一種流行的網(wǎng)絡(luò)爬
蟲(chóng)和數(shù)據(jù)處理語(yǔ)言??梢栽贘upyterNotebook中使用Python進(jìn)行音樂(lè)排行榜數(shù)
據(jù)的網(wǎng)頁(yè)抓取、數(shù)據(jù)清洗、分析和可視化等操作。
(2).JupyterNotebook還支持Markdown語(yǔ)法,可以直接在Notebook中添
加富文本內(nèi)容、公式、鏈接等元素。這些功能可以幫助你更好地記錄和分享代
碼思路、實(shí)驗(yàn)結(jié)果和心得體會(huì)。
綜上所述,JupyterNotebook通過(guò)結(jié)合Python語(yǔ)言和豐富的插件庫(kù),可以
高效地實(shí)現(xiàn)對(duì)咪咕音樂(lè)排行榜歌曲數(shù)據(jù)的數(shù)據(jù)清洗以及簡(jiǎn)單方便的數(shù)據(jù)準(zhǔn)備。
1.2.4PyCharm簡(jiǎn)介
PyCharm是一款Python集成開(kāi)發(fā)環(huán)境,在當(dāng)下非常流行。它具有良好的編
碼、調(diào)試、版本控制和測(cè)試工具,可以幫助程序員更方便地編寫(xiě)優(yōu)秀的Python
代碼。而對(duì)于爬蟲(chóng)爬取咪咕音樂(lè)排行榜的歌曲數(shù)據(jù)信息來(lái)說(shuō),PyCharm也可以提
供許多便利。
首先,PyCharm集成了強(qiáng)大的Python調(diào)試器。在爬蟲(chóng)的開(kāi)發(fā)過(guò)程中,會(huì)遇
到許多錯(cuò)誤,例如請(qǐng)求超時(shí)、頁(yè)面解析錯(cuò)誤等。這時(shí),可以使用PyCharm的調(diào)
試工具手動(dòng)調(diào)試代碼,定位問(wèn)題并修復(fù)。調(diào)試工具可以其逐行執(zhí)行代碼,并監(jiān)
視變量和引用。這可以大大提高代碼調(diào)試的效率和準(zhǔn)確性。
其次,PyCharm同樣提供了出色的編碼實(shí)用工具。爬蟲(chóng)編碼通常會(huì)包含大量
字符串操作、正則表達(dá)式處理和編碼轉(zhuǎn)換。PyCharm內(nèi)置了很多實(shí)用的插件,可
以使這些操作更加簡(jiǎn)單和高效。例如,它可以自動(dòng)補(bǔ)全變量名和方法名稱,高
亮語(yǔ)法錯(cuò)誤和代碼警告,快速跳轉(zhuǎn)到變量定義和查看文檔,以及執(zhí)行快捷鍵自
動(dòng)生成代碼。這些功能可以讓程序員更加專注于開(kāi)發(fā)和調(diào)試自己的代碼,而不
必?fù)?dān)心代碼中不必要的錯(cuò)誤和繁瑣的細(xì)節(jié)。
4
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
最后,PyCharm在測(cè)試方面也提供了很大的支持。任何程序都需要經(jīng)過(guò)完整
和準(zhǔn)確的測(cè)試,以保證其在生產(chǎn)環(huán)境中能夠正常運(yùn)行。PyCharm可以為其生成測(cè)
試框架和測(cè)試報(bào)告,并支持持續(xù)集成和測(cè)試,提高代碼的完整性和準(zhǔn)確性。
本次畢業(yè)設(shè)計(jì)主要依靠PyCharm開(kāi)發(fā)工具完成對(duì)咪咕音樂(lè)排行榜數(shù)據(jù)的爬
取,存儲(chǔ)實(shí)現(xiàn)和可視化功能。
在爬取咪咕音樂(lè)排行榜歌曲相關(guān)數(shù)據(jù)信息時(shí),用PyCharm可以更加輕松、
快捷地開(kāi)發(fā)出高效的爬蟲(chóng)程序,并在保證程序穩(wěn)定運(yùn)行的前提下,不斷地迭代
和更新爬蟲(chóng)業(yè)務(wù)邏輯。
總的來(lái)說(shuō),PyCharm提供的強(qiáng)大的編碼、調(diào)試和測(cè)試工具使其成為爬蟲(chóng)開(kāi)發(fā)
的理想工具。其內(nèi)置的各種實(shí)用插件可以大大提高代碼開(kāi)發(fā)的效率和準(zhǔn)確性。
2需求分析
2.1可行性需求分析
(1).政策可行性
首先需確認(rèn),是否有可以合法獲取數(shù)據(jù)的渠道和方式。需要了解音樂(lè)網(wǎng)站
的相關(guān)規(guī)定和政策,是否允許第三方爬取其數(shù)據(jù)??傊?,要在合法的條件下,
爬取可行的音樂(lè)網(wǎng)站排行榜數(shù)據(jù)。
(2).技術(shù)可行性
本次畢業(yè)設(shè)計(jì)中將使用Python語(yǔ)言來(lái)實(shí)現(xiàn)數(shù)據(jù)獲取,數(shù)據(jù)清洗,數(shù)據(jù)可視
化等操作。在數(shù)據(jù)獲取的過(guò)程中遇到一些問(wèn)題,通過(guò)抓包分析發(fā)現(xiàn)咪咕音樂(lè)網(wǎng)
站歌單信息頁(yè)面的數(shù)據(jù)是動(dòng)態(tài)傳輸?shù)?,所以通過(guò)瀏覽器控制臺(tái)可以獲取請(qǐng)求和
其參數(shù)。得到網(wǎng)頁(yè)面數(shù)據(jù)的返回值。
然后將獲取的原始數(shù)據(jù)儲(chǔ)存到txt文件,以便在后續(xù)的數(shù)據(jù)預(yù)處理和可視
化中再進(jìn)行調(diào)用。最后再將處理過(guò)后的數(shù)據(jù)存入MySQL數(shù)據(jù)庫(kù)中做持久化儲(chǔ)存。
以上為此次畢業(yè)設(shè)計(jì)的技術(shù)可行性,在后續(xù)的工作中會(huì)將所有的步驟實(shí)現(xiàn)
到位,并保證數(shù)據(jù)的準(zhǔn)確性和安全性。
(3).需求可行性
優(yōu)美動(dòng)聽(tīng)的音樂(lè)可以放松人的心情,是人們?cè)诳嘣餆灂r(shí)極佳的“調(diào)味
劑”。有時(shí),有音樂(lè)的陪伴,會(huì)溫暖消冷的心神。
本次畢業(yè)設(shè)計(jì)通過(guò)爬取咪咕音樂(lè)排行榜的數(shù)據(jù),來(lái)分析當(dāng)日排行榜上的歌
曲信息。然后從歌手、標(biāo)簽、專輯等方面對(duì)其進(jìn)行深度剖析,分析出有價(jià)值的
信息,最后通過(guò)數(shù)據(jù)可視化得出結(jié)論。
5
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
(4).數(shù)據(jù)可行性
在獲取到所需數(shù)據(jù)后,需要對(duì)這些數(shù)據(jù)進(jìn)行清洗、處理、統(tǒng)計(jì)等分析工作。
因此,在開(kāi)始之前需要確定所要收集的數(shù)據(jù)類型與數(shù)量,并明確使用何種方法
來(lái)對(duì)數(shù)據(jù)進(jìn)行處理以滿足畢業(yè)設(shè)計(jì)指標(biāo)要求。
2.2采集目標(biāo)功能分析
本次畢業(yè)設(shè)計(jì)的數(shù)據(jù)集來(lái)源為咪咕音樂(lè)排行榜網(wǎng)站,通過(guò)Python爬取咪咕
音樂(lè)所有排行榜上歌曲的信息。所選擇的音樂(lè)排行榜榜單分別有新歌榜,熱歌
榜,原創(chuàng)榜,影視榜,內(nèi)地榜,港臺(tái)榜,歐美榜,日韓榜,KTV榜,網(wǎng)絡(luò)榜和彩
鈴榜。獲取的目標(biāo)數(shù)據(jù)分別是歌單排名,歌曲名稱,演唱者,作詞者,作曲者,
所屬專輯以及音樂(lè)標(biāo)簽。
對(duì)獲取的數(shù)據(jù)進(jìn)行去重、過(guò)濾無(wú)效信息,格式轉(zhuǎn)換等操作,生成規(guī)范化的
數(shù)據(jù)表格。數(shù)據(jù)清洗后共860條記錄,爬取完成后盡可能的去檢查數(shù)據(jù)的準(zhǔn)確
性,確保爬取的數(shù)據(jù)無(wú)誤并且是屬于咪咕音樂(lè)實(shí)時(shí)存在的排行榜歌曲信息。
將獲取到并處理后的數(shù)據(jù)保存到MySQL數(shù)據(jù)庫(kù)中,在后續(xù)進(jìn)行分析時(shí)可以
隨時(shí)調(diào)用使用。將采集到的數(shù)據(jù)通過(guò)柱形圖、折線圖表形式展示,方便用戶查
看和理解相應(yīng)的音樂(lè)歌曲信息。
最后對(duì)數(shù)據(jù)表進(jìn)行多個(gè)維度的分析后詳細(xì)的闡述。例如,從各歌曲的標(biāo)簽
對(duì)其進(jìn)行分析,查看排行榜中跟音樂(lè)最緊密相關(guān)的標(biāo)簽。也可以通過(guò)獲取歌手
的歌曲沖上排行榜的總數(shù),分析出當(dāng)日受歡迎的歌手有哪些。
2.3關(guān)鍵技術(shù)分析
2.3.1網(wǎng)絡(luò)爬蟲(chóng)技術(shù)
網(wǎng)絡(luò)爬蟲(chóng)是指通過(guò)程序自動(dòng)抓取互聯(lián)網(wǎng)上的信息的技術(shù),而爬取音樂(lè)網(wǎng)站
排行榜數(shù)據(jù)正是網(wǎng)絡(luò)爬蟲(chóng)技術(shù)的一種應(yīng)用。在這個(gè)場(chǎng)景下,網(wǎng)絡(luò)爬蟲(chóng)可以自動(dòng)
從目標(biāo)音樂(lè)網(wǎng)站上獲取所需數(shù)據(jù),然后進(jìn)行清洗和處理,最終生成規(guī)范化的數(shù)
據(jù)表格。因此,可以說(shuō)網(wǎng)絡(luò)爬蟲(chóng)是實(shí)現(xiàn)爬取音樂(lè)網(wǎng)站排行榜數(shù)據(jù)的關(guān)鍵技術(shù)之
一。
爬取音樂(lè)排行榜數(shù)據(jù)需要使用一種特定的爬蟲(chóng)技術(shù),以適應(yīng)音樂(lè)網(wǎng)站的結(jié)
構(gòu)和數(shù)據(jù)格式,常見(jiàn)的包括:
(1).正則表達(dá)式:使用正則表達(dá)式的模式匹配,可以更準(zhǔn)確地從網(wǎng)頁(yè)源代
碼中提取所需的數(shù)據(jù)。
6
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
(2).Xpath:使用XPath語(yǔ)言可以解析網(wǎng)頁(yè)中的HTML元素,并定位到所需
的數(shù)據(jù)。它是一種非常靈活的解析方法,可以在網(wǎng)頁(yè)結(jié)構(gòu)變化時(shí)動(dòng)態(tài)適應(yīng)。
(3).BeautifulSoup:這是Python的一個(gè)HTML解析庫(kù),可以讓開(kāi)發(fā)者能夠
快速、方便地從網(wǎng)頁(yè)中找到所需的數(shù)據(jù)。
(4).Scrapy:這是Python的一個(gè)高級(jí)網(wǎng)絡(luò)爬蟲(chóng)框架,它可以處理大規(guī)模的
網(wǎng)頁(yè)數(shù)據(jù)爬取,并支持分布式爬蟲(chóng)的部署。除了以上技術(shù)外,還需要一些數(shù)據(jù)
持久化技術(shù),例如將爬取的數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)中,以便于后續(xù)處理和分析。
本次畢業(yè)設(shè)計(jì)選取的爬蟲(chóng)技術(shù)為正則表達(dá)式和Xpath,以下是對(duì)它們的詳細(xì)
闡述以及對(duì)應(yīng)的實(shí)現(xiàn)代碼。
(1).正則表達(dá)式
正則表達(dá)式可以對(duì)字符、字符串、數(shù)字等不同數(shù)據(jù)類型進(jìn)行匹配,具有很
強(qiáng)的靈活性,而且引擎的實(shí)現(xiàn)方式精簡(jiǎn)高效,可以快速地處理大量的數(shù)據(jù),并
且預(yù)定義為一個(gè)模板,以后可以直接調(diào)用,實(shí)現(xiàn)代碼的重用。除了單個(gè)字符匹
配之外,正則表達(dá)式還可以用于處理字符集合,比如匹配一個(gè)含有某些字符的
字符串、匹配郵箱地址等。
本次編程利用正則表達(dá)式完成歌單地址ID值的獲取。先通過(guò)正則表達(dá)式的
research方法先將爬取的網(wǎng)頁(yè)源代碼截取到存放歌單地址ID值的<script>標(biāo)
簽,縮減源代碼范圍,確保正則表達(dá)式的findall方法能準(zhǔn)確篩選出想要的歌
曲id值,最后再將歌曲id值與網(wǎng)址拼接成歌曲網(wǎng)址后存儲(chǔ)到歌曲網(wǎng)址列表返
回,正則表達(dá)式的實(shí)現(xiàn)代碼如下。
#獲取歌曲地址
defget_music_urls(url):
data=requests.get(url,headers=headers).text
#在源代碼中找到歌曲id的標(biāo)簽
copyrightId_temp=re.search(r'<script>.*?varlistData=(.*?)</script>',data,
re.DOTALL).group(1)
#爬取每個(gè)歌曲的id
copyrightId=re.findall(r'".*?.jpg","copyrightId":"(.*?)","duration"',copyrightId_temp)
music_urls=['/v3/music/song/{}'.format(i)foriincopyrightId]
returnmusic_urls
(2).Xpath
XPath是與HTML、XML完美兼容的語(yǔ)言,用于解析XML及HTML文檔非常方
便,可以直接從屬性或元素中提取所需內(nèi)容而無(wú)需分析整個(gè)文檔結(jié)構(gòu)。而且結(jié)
7
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
構(gòu)清晰簡(jiǎn)單,易于編寫(xiě)和學(xué)習(xí),精通XPath語(yǔ)言可以很快地提高數(shù)據(jù)抓取速度。
可以實(shí)現(xiàn)各種復(fù)雜的數(shù)據(jù)提取操作,避免錯(cuò)誤和無(wú)用內(nèi)容。
本次編程利用Xpath完成目標(biāo)數(shù)據(jù)的收集。先將爬取的源代碼轉(zhuǎn)換為標(biāo)準(zhǔn)
的html格式,然后通過(guò)xpath方法在html格式的源代碼中依次獲取歌名、歌
手、作詞者、作曲者、專輯和音樂(lè)標(biāo)簽的信息,并把它們存儲(chǔ)到音樂(lè)信息列表
后返回,Xpath的實(shí)現(xiàn)代碼如下。
#獲取歌曲信息
defget_music_info():
foriinrange(len(music_urls)):
data=requests.get(music_urls[i],headers=headers).text
html=etree.HTML(data)
rank=str(i+1)#排名
name=html.xpath('/html/body/div[2]/div[2]/div[2]/h2/text()')[0]#歌名
singer=html.xpath('/html/body/div[2]/div[2]/div[2]/div[1]/a/text()')[0]#歌手
lyricist=
html.xpath('/html/body/div[2]/div[2]/div[2]/div[2]/p[1]/span/text()')[0].replace('作詞:','')#作
詞
composer=
html.xpath('/html/body/div[2]/div[2]/div[2]/div[2]/p[2]/span/text()')[0].replace('作曲:','')#作
曲
album=html.xpath('/html/body/div[2]/div[2]/div[2]/div[2]/p[3]/span/a/text()')[0]#專
輯
label=html.xpath('/html/body/div[2]/div[2]/div[2]/div[2]/p[4]/span/span[1]/text()')[0]
#標(biāo)簽
#將所有數(shù)據(jù)保存到列表中
music_info.append([rank,name,singer,lyricist,composer,album,label])
2.3.2文件存取技術(shù)
網(wǎng)絡(luò)爬蟲(chóng)的txt文件存儲(chǔ)技術(shù)是指將爬取的數(shù)據(jù)存儲(chǔ)在文本文件中,使用
文本文件存儲(chǔ)方式具有以下優(yōu)點(diǎn):
(1).簡(jiǎn)單易用:文本文件格式簡(jiǎn)單,存儲(chǔ)和讀取都非常方便,不需要專門(mén)
的數(shù)據(jù)庫(kù)管理技術(shù)。
(2).高效性:由于文本文件不需要額外的程序或庫(kù)支持,因此在處理小型
數(shù)據(jù)時(shí)能夠獲得較高的讀取和寫(xiě)入速度。
(3).兼容性:文本文件是常見(jiàn)的數(shù)據(jù)格式,可以在不同的操作系統(tǒng)、軟件平
臺(tái)和程序中讀取和使用。
(4).便于共享:爬蟲(chóng)數(shù)據(jù)存儲(chǔ)在文本文件中,便于共享和傳輸。
8
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
(5).易于維護(hù)和備份:文本文件的結(jié)構(gòu)簡(jiǎn)單,易于備份,可以手工編輯和
修改,使數(shù)據(jù)的維護(hù)和管理更加方便。
本次畢業(yè)設(shè)計(jì)存儲(chǔ)咪咕音樂(lè)排行榜歌單數(shù)據(jù)所采用的文件存儲(chǔ)技術(shù)就是利
用txt文件存儲(chǔ)技術(shù)。在Python代碼中,以追加的方式打開(kāi)一個(gè)文件,然后遍
歷已經(jīng)獲取的榜單數(shù)據(jù)信息,利用換行和制表符將其以合適的格式存儲(chǔ)下來(lái),
txt存儲(chǔ)的實(shí)現(xiàn)代碼如下。
#將獲取到的數(shù)據(jù)添加到文件中
defput_info_to_txt(txt_name):
withopen(txt_name,'w+',encoding='utf-8')asf1:
foriinmusic_info:
forjini:
ifj==i[-1]:
f1.write(j+'\n')
else:
f1.write(j+'\t')
2.3.3可視化技術(shù)
可視化技術(shù)(VisualizationTechnology)是指運(yùn)用圖形化手段將數(shù)據(jù)、
信息等抽象概念通過(guò)可視化方式展現(xiàn)出來(lái)的技術(shù)。它將數(shù)據(jù)、信息轉(zhuǎn)換成直觀、
易于理解和掌握的圖形,讓人們可以通過(guò)直觀感受來(lái)獲取深層次的數(shù)據(jù)信息,
從而更好地發(fā)現(xiàn)數(shù)據(jù)中隱藏的規(guī)律和趨勢(shì)。
可視化技術(shù)可以將爬取到的音樂(lè)排行榜歌單數(shù)據(jù)通過(guò)各種圖表、地圖、動(dòng)
態(tài)圖等形式來(lái)展示,進(jìn)行可視化呈現(xiàn),從而更直觀、生動(dòng)、形象地展示音樂(lè)排
行榜中歌手,專輯和歌曲標(biāo)簽等多個(gè)方面的信息。
本次畢業(yè)設(shè)計(jì)使用pycharm工具,實(shí)現(xiàn)對(duì)排行榜歌單數(shù)據(jù)的可視化技術(shù)。
其中,用pandas庫(kù)讀取存儲(chǔ)在txt文件的歌單數(shù)據(jù),用matplotlib庫(kù)和
pycharts庫(kù)將爬取的數(shù)據(jù)進(jìn)行圖表可視化展示。
選擇的展示圖表分別是詞云圖、餅圖和柱狀圖,以下是對(duì)這些圖表功能特
點(diǎn)的介紹,這也是為什么要展現(xiàn)為這幾種圖的原因。
(1).詞云圖
詞云圖是一種基于文字的可視化技術(shù),它將文本信息通過(guò)顏色、字體大小、
重心標(biāo)示等視覺(jué)手段展現(xiàn)出來(lái),從而更加直觀地呈現(xiàn)出關(guān)鍵字的出現(xiàn)頻率、重
要程度和相關(guān)度等信息。
9
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
詞云圖直觀而易于理解,不需要專業(yè)的統(tǒng)計(jì)知識(shí),可以快速地將文字?jǐn)?shù)據(jù)
變?yōu)橐曈X(jué)化的信息,加速了對(duì)數(shù)據(jù)的分析過(guò)程。而且有多種形式可以選擇,如
基于形狀的詞云圖、基于位置的詞云圖、基于顏色的詞云圖等。可以根據(jù)不同
的數(shù)據(jù)類型和展示目標(biāo)進(jìn)行調(diào)整,提高了可視化的靈活性。
同時(shí)也能夠更加有效地傳遞信息,而且傳遞的信息準(zhǔn)確性和精度較高,具
有較高的可靠性。詞云圖還能夠展示單詞之間的相關(guān)性,使得用戶可以深入的
理解數(shù)據(jù)背后的信息。
(2).餅圖
餅圖是一種基于數(shù)據(jù)的可視化技術(shù),將數(shù)據(jù)分割為幾塊“餅狀”區(qū)域,并
用不同的顏色或其他可視化方式來(lái)區(qū)分每個(gè)部分的大小或重要程度。
餅圖易于理解和使用,而且不需要專業(yè)的統(tǒng)計(jì)和計(jì)算知識(shí)。餅圖可以非常
清楚地顯示不同部分的比例及其在整體中的占比情況,使得人們可直觀感受到
每個(gè)部分在整體中的重要性。可以通過(guò)多種色彩、圖案等方式來(lái)區(qū)分不同部分,
使圖表顯示的信息更具吸引力。可以用于比較個(gè)體與總體的比例,比較不同時(shí)
間段或不同地區(qū)的數(shù)據(jù)差異,有助于更快速準(zhǔn)確地觀察和分析數(shù)據(jù)。
(3).柱狀圖
柱狀圖是一種基于數(shù)據(jù)的可視化技術(shù),通過(guò)使用柱形展示每個(gè)數(shù)據(jù)的大小、
高度或長(zhǎng)度。
柱狀圖可以幫助人們更直觀地理解數(shù)據(jù),尤其是對(duì)于非常大的數(shù)據(jù)集而言。
可以顯示不同組數(shù)據(jù)的差異。柱狀圖也可以通過(guò)交互來(lái)幫助用戶更深入地探索
數(shù)據(jù)。例如,用戶可以通過(guò)鼠標(biāo)懸停在某個(gè)柱子上來(lái)獲得詳細(xì)信息。
比如,可以使用折線圖或柱狀圖展示不同歌曲或不同曲風(fēng)的排名變化,使
用地圖可以展示不同地域的音樂(lè)受眾分布,使用動(dòng)態(tài)圖可以展示不同時(shí)間段內(nèi)
的音樂(lè)排行榜變化趨勢(shì)。
除此之外,可視化技術(shù)還可以讓數(shù)據(jù)更加生動(dòng)、具體,有助于人們更好地
理解、分析和處理數(shù)據(jù),更快速、全面地獲取數(shù)據(jù)背后的規(guī)律和趨勢(shì)。因此,
在爬取咪咕音樂(lè)排行榜數(shù)據(jù)時(shí),將抓取到的數(shù)據(jù)進(jìn)行可視化呈現(xiàn),將非常有益
于數(shù)據(jù)的分析和應(yīng)用。
3數(shù)據(jù)采集
3.1采集頁(yè)面分析
首先通過(guò)谷歌瀏覽器搜索咪咕音樂(lè)的官方網(wǎng)頁(yè),進(jìn)入官網(wǎng)后找到并切換到
10
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
音樂(lè)榜單,從這獲取咪咕尖叫榜和咪咕特色榜下拉欄的所有音樂(lè)排行榜網(wǎng)址,示
例圖如圖3-1。
圖3-1咪咕音樂(lè)排行榜榜單圖
然后,選取尖叫新歌榜進(jìn)行進(jìn)行頁(yè)面分析,尖叫新歌榜的URL為:
/v3/music/top/jianjiao_hotsong。點(diǎn)擊頁(yè)面下方的分
頁(yè)按鈕,同時(shí)觀察URL,發(fā)現(xiàn)URL沒(méi)有變化,示例圖如圖3-2,3-3。
圖3-2尖叫新歌榜第1頁(yè)圖
11
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
圖3-3尖叫新歌榜第2頁(yè)圖
按F12調(diào)出開(kāi)發(fā)者工具,選擇瀏覽器控制臺(tái)的Network面板,然后刷新頁(yè)
面,當(dāng)請(qǐng)求頁(yè)面刷新出尖叫新歌榜的請(qǐng)求信息時(shí),選擇該請(qǐng)求信息,將標(biāo)簽定
位到Headers標(biāo)頭,分析尖叫新歌榜的請(qǐng)求信息,如圖3-4。
圖3-4開(kāi)發(fā)者工具圖
通過(guò)分析,得到該網(wǎng)址的請(qǐng)求方式是get請(qǐng)求。將瀏覽器控制臺(tái)切換到
Console面板,準(zhǔn)備分析網(wǎng)頁(yè)是靜態(tài)網(wǎng)頁(yè)還是動(dòng)態(tài)網(wǎng)頁(yè)。
在命令行中輸入“alert(document.lastModified);”,彈出窗口會(huì)記錄時(shí)
間,隨著多次刷新頁(yè)面,如果時(shí)間也會(huì)不斷變化的話,則證明該網(wǎng)頁(yè)是動(dòng)態(tài)網(wǎng)
12
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
頁(yè),示例圖如圖3-5,3-6。
圖3-5網(wǎng)站彈出時(shí)間1圖
圖3-6網(wǎng)站彈出時(shí)間2圖
為了進(jìn)一步爬取動(dòng)態(tài)網(wǎng)頁(yè)數(shù)據(jù),先選擇點(diǎn)開(kāi)幾個(gè)歌曲,分析他們的網(wǎng)址,
經(jīng)對(duì)比發(fā)現(xiàn)他們只有最后一個(gè)路徑有偏差,示例圖如圖3-7,3-8。
13
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
圖3-7歌單網(wǎng)址1圖
圖3-8歌單網(wǎng)址2圖
根據(jù)經(jīng)驗(yàn)推測(cè),該值應(yīng)該是歌單的網(wǎng)址路徑ID值。經(jīng)網(wǎng)頁(yè)爬取排查發(fā)現(xiàn),
只有網(wǎng)頁(yè)源代碼<scripts>標(biāo)簽下面所有歌曲的路徑ID值是可獲取到的,示例
圖如圖3-9,3-10。驗(yàn)證推測(cè)后,通過(guò)這種方式爬取所有歌單地址。
14
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
圖3-9網(wǎng)頁(yè)源代碼的歌曲ID值圖
圖3-10經(jīng)爬取驗(yàn)證的歌曲ID值圖
總的來(lái)說(shuō),在對(duì)咪咕音樂(lè)排行榜的網(wǎng)站進(jìn)行頁(yè)面分析時(shí),也遇到了不少難
題,比如爬蟲(chóng)知識(shí)儲(chǔ)備的缺漏,不知道如何分辨網(wǎng)頁(yè)動(dòng)態(tài)與靜態(tài),在確認(rèn)歌曲
的路徑ID時(shí),尋找那個(gè)ID值才是所需要的。不過(guò),最終所有的難題都通過(guò)查
詢大量的參考資料得到了有效的解決。
3.2字段分析
進(jìn)入咪咕音樂(lè)尖叫新歌榜的其中一個(gè)歌單網(wǎng)址,按F12調(diào)出開(kāi)發(fā)者工具,
選擇瀏覽器控制臺(tái)的Element面板,通過(guò)資源定位符,找到歌單信息集中的位
15
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
置,然后分析信息字段爬取的方式,示例圖如圖3-11。
圖3-11歌曲字段信息圖
咪咕音樂(lè)排行榜的歌曲字段分析相對(duì)簡(jiǎn)單,沒(méi)有什么問(wèn)題,只要確認(rèn)好歌
單信息的源代碼解析方式就行。
3.3編程實(shí)現(xiàn)
對(duì)網(wǎng)站進(jìn)行采集頁(yè)面和頁(yè)面字段等細(xì)節(jié)的分析后,準(zhǔn)備實(shí)現(xiàn)編程需求,完
成數(shù)據(jù)采集功能。首先導(dǎo)入爬取網(wǎng)站所需要的庫(kù),為爬取網(wǎng)站提供相應(yīng)方法。
#導(dǎo)入庫(kù)
importrequests
fromlxmlimportetree
importre
然后設(shè)置請(qǐng)求頭,模擬瀏覽器訪問(wèn)網(wǎng)站。
#設(shè)置請(qǐng)求頭
headers={
'User-Agent':'User-Agent:Mozilla/5.0(WindowsNT6.1)AppleWebKit/537.36(KHTML,
likeGecko)Chrome/63.0.3239.132Safari/537.36'
}
配置好爬蟲(chóng)的環(huán)境后,實(shí)現(xiàn)數(shù)據(jù)采集需求,完成咪咕音樂(lè)各榜單的歌單信
息爬取,詳細(xì)操作代碼如下。
importrequests
fromlxmlimportetree
16
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
importre
headers={
'User-Agent':'User-Agent:Mozilla/5.0(WindowsNT6.1)AppleWebKit/537.36(KHTML,
likeGecko)Chrome/63.0.3239.132Safari/537.36'
}
#各榜單網(wǎng)頁(yè)url
li1=['jianjiao_newsong','jianjiao_hotsong','jianjiao_original','movies','mainland','hktw',
'eur_usa','jpn_kor','coloring','ktv','network']
bangdang_urls=['/v3/music/top/{}'.format(i)foriinli1]
li2=['新歌榜','熱歌榜','原創(chuàng)榜','影視榜','內(nèi)地榜','港臺(tái)榜','歐美榜','日韓榜','彩鈴
榜','KTV榜','網(wǎng)絡(luò)榜']
txt_name=['{}數(shù)據(jù).txt'.format(i)foriinli2]
#獲取歌曲地址
defget_music_urls(url):
data=requests.get(url,headers=headers).text
#在源代碼中找到歌曲id的標(biāo)簽
copyrightId_temp=re.search(r'<script>.*?varlistData=(.*?)</script>',data,
re.DOTALL).group(1)
#爬取每個(gè)歌曲的id
copyrightId=re.findall(r'".*?.jpg","copyrightId":"(.*?)","duration"',copyrightId_temp)
music_urls=['/v3/music/song/{}'.format(i)foriincopyrightId]
returnmusic_urls
#獲取歌曲信息
defget_music_info():
foriinrange(len(music_urls)):
data=requests.get(music_urls[i],headers=headers).text
html=etree.HTML(data)
rank=str(i+1)#排名
name=html.xpath('/html/body/div[2]/div[2]/div[2]/h2/text()')[0]#歌名
singer=html.xpath('/html/body/div[2]/div[2]/div[2]/div[1]/a/text()')[0]#歌手
lyricist=
html.xpath('/html/body/div[2]/div[2]/div[2]/div[2]/p[1]/span/text()')[0].replace('作詞:','')#
作詞
composer=
html.xpath('/html/body/div[2]/div[2]/div[2]/div[2]/p[2]/span/text()')[0].replace('作曲:','')#
作曲
album=html.xpath('/html/body/div[2]/div[2]/div[2]/div[2]/p[3]/span/a/text()')[0]#專
輯
label=html.xpath('/html/body/div[2]/div[2]/div[2]/div[2]/p[4]/span/span[1]/text()')[0]
#標(biāo)簽
#將所有數(shù)據(jù)保存到列表中
17
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
music_info.append([rank,name,singer,lyricist,composer,album,label])
#將獲取到的數(shù)據(jù)添加到文件中
defput_info_to_txt(txt_name):
withopen(txt_name,'w+',encoding='utf-8')asf1:
foriinmusic_info:
forjini:
ifj==i[-1]:
f1.write(j+'\n')
else:
f1.write(j+'\t')
if__name__=='__main__':
foriinrange(len(bangdang_urls)):
music_urls=get_music_urls(bangdang_urls[i])
music_info=[['排名','歌名','歌手','作詞','作曲','專輯','標(biāo)簽']]
get_music_info()
print(music_info[0:2])
put_info_to_txt(txt_name[i])
4數(shù)據(jù)清洗與處理
在爬取收集大量的數(shù)據(jù)信息后,需要對(duì)數(shù)據(jù)進(jìn)行預(yù)處理,也就是數(shù)據(jù)清洗
和檢查,確定爬取的數(shù)據(jù)是否存在無(wú)效值,并要保證數(shù)據(jù)的一致性。這個(gè)對(duì)于
信息質(zhì)量的評(píng)估是一項(xiàng)很重要的任務(wù)。不僅如此,還要將數(shù)據(jù)進(jìn)行有理化和有
序化,這樣處理后的數(shù)據(jù)才能在調(diào)用共享過(guò)程中方便很多開(kāi)發(fā)人員對(duì)數(shù)據(jù)信息
的使用。
本次畢業(yè)設(shè)計(jì)中通過(guò)JupyterNotebook軟件進(jìn)行數(shù)據(jù)清洗,將爬下來(lái)的咪
咕音樂(lè)排行榜的歌曲數(shù)據(jù)和網(wǎng)頁(yè)原數(shù)據(jù)進(jìn)行比對(duì),檢查內(nèi)容是否存在空值、錯(cuò)
值,還有數(shù)據(jù)的位置是否正確,并對(duì)不同問(wèn)題的數(shù)據(jù)要進(jìn)行不同的處理。
4.1數(shù)據(jù)清洗
利用JupyterNotebook從存儲(chǔ)的txt文件中讀取數(shù)據(jù),準(zhǔn)備進(jìn)行數(shù)據(jù)清洗,
核心參考代碼如下:
importpandasaspd
df=pd.read_csv(r'D:\pycharm\文件保存位置\python畢業(yè)設(shè)計(jì)\內(nèi)地榜數(shù)
據(jù).txt',sep='\t',engine='python',encoding='utf_8_sig')
18
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
df.head(10)
運(yùn)行核心代碼生成的數(shù)據(jù)如圖4-1:
圖4-1數(shù)據(jù)清洗準(zhǔn)備頁(yè)面圖
然后使用duplicated()方法驗(yàn)證數(shù)據(jù)是否存在重復(fù)值,參考示例如圖4-2。
圖4-2數(shù)據(jù)重復(fù)值查驗(yàn)圖
19
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
經(jīng)過(guò)查驗(yàn),發(fā)現(xiàn)數(shù)據(jù)并沒(méi)有重復(fù)值。接下來(lái),使用isnull()方法判斷數(shù)
據(jù)是否存在缺失值,參考示例如圖4-3。
圖4-3數(shù)據(jù)缺失值查驗(yàn)圖
經(jīng)過(guò)數(shù)據(jù)查詢后發(fā)現(xiàn)數(shù)據(jù)也沒(méi)有存在缺失值,以同樣的方法,去處理其他
排行榜的數(shù)據(jù)。經(jīng)驗(yàn)證,內(nèi)地榜和其他排行榜的數(shù)據(jù)沒(méi)有漏洞、錯(cuò)亂或者空值
等問(wèn)題。
接下來(lái),根據(jù)需要,將有效數(shù)據(jù)進(jìn)行一致的統(tǒng)一規(guī)劃,并且去掉不需要的
行和列數(shù)據(jù),以避免冗余數(shù)據(jù)的影響,最終的數(shù)據(jù)清洗后的頁(yè)面效果如圖4-4
所示。
20
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
圖4-4內(nèi)地榜數(shù)據(jù)清洗完成界面圖
保留需要的行列數(shù)據(jù),整理為原網(wǎng)頁(yè)格式存入txt文件中,以便留存后續(xù)
作為統(tǒng)計(jì)分析、可視化使用。
4.2數(shù)據(jù)儲(chǔ)存
數(shù)據(jù)儲(chǔ)存的方式方法有很多,可以直接用記事本格式儲(chǔ)存(txt),也可以
用其他文件的形式儲(chǔ)存csv、excel、json等,但是以上方法保存的數(shù)據(jù)體量都
普遍不大。如果需要儲(chǔ)存大量的數(shù)據(jù)信息就需要用到數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)分為關(guān)系
型和非關(guān)系型數(shù)據(jù)庫(kù)。關(guān)系型數(shù)據(jù)庫(kù)比較典型的有MySQL和Oracle等,非關(guān)系
型數(shù)據(jù)庫(kù)等以鍵值對(duì)形式儲(chǔ)存數(shù)據(jù),其中的代表有Mongodb、Redis等。
本次畢業(yè)設(shè)計(jì)用到的是txt、MySQL來(lái)實(shí)現(xiàn)數(shù)據(jù)儲(chǔ)存操作。首先,使用Python
的文件寫(xiě)入方法將數(shù)據(jù)寫(xiě)入到txt,實(shí)現(xiàn)代碼如下。
#將獲取到的數(shù)據(jù)添加到文件中
defput_info_to_txt(txt_name):
withopen(txt_name,'w+',encoding='utf-8')asf1:
foriinmusic_info:
forjini:
ifj==i[-1]:
f1.write(j+'\n')
else:
f1.write(j+'\t')
然后,打開(kāi)VMwareWorkstationPr虛擬機(jī)啟動(dòng)Linux環(huán)境,將txt文件數(shù)
據(jù)上傳到Linux系統(tǒng)后將其導(dǎo)入到MySQL。最后進(jìn)行數(shù)據(jù)檢驗(yàn),如圖4-5所示。
21
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
圖4-5數(shù)據(jù)存儲(chǔ)到MySQL檢驗(yàn)頁(yè)面圖
數(shù)據(jù)存儲(chǔ)的實(shí)現(xiàn)需要考慮較多的細(xì)節(jié),比如在遍歷歌曲列表信息時(shí),要將
每行的歌單信息以一定的格式分隔,并在每行數(shù)據(jù)讀取的結(jié)尾進(jìn)行換行,在數(shù)
據(jù)儲(chǔ)存完成后,一定要檢驗(yàn)數(shù)據(jù)是否存儲(chǔ)成功。
4.3編程實(shí)現(xiàn)
創(chuàng)建數(shù)據(jù)庫(kù),用于存放數(shù)據(jù)表,實(shí)現(xiàn)代碼與結(jié)果如圖4-6。
圖4-6創(chuàng)建數(shù)據(jù)庫(kù)圖
創(chuàng)建數(shù)據(jù)表,構(gòu)建存儲(chǔ)數(shù)據(jù)的結(jié)構(gòu),實(shí)現(xiàn)代碼與結(jié)果如圖4-7。
圖4-7創(chuàng)建數(shù)據(jù)表圖
將存儲(chǔ)在本地txt文件的歌單信息上傳到Linux系統(tǒng)后,將其導(dǎo)入數(shù)據(jù)表
中,實(shí)現(xiàn)代碼與結(jié)果如圖4-8。
圖4-8導(dǎo)入文件數(shù)據(jù)到數(shù)據(jù)表圖
22
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
通過(guò)查詢數(shù)據(jù)表驗(yàn)證存入數(shù)據(jù)是否正確,實(shí)現(xiàn)代碼與結(jié)果如圖4-9。
圖4-9數(shù)據(jù)驗(yàn)證圖
之所以將爬取并存儲(chǔ)到txt的文件數(shù)據(jù)轉(zhuǎn)存到存儲(chǔ)到MySQL數(shù)據(jù)庫(kù),有以
下幾個(gè)原因:
(1).數(shù)據(jù)庫(kù)的數(shù)據(jù)結(jié)構(gòu)更為清晰和規(guī)范,可以更方便地進(jìn)行數(shù)據(jù)管理和查
詢。
(2).數(shù)據(jù)庫(kù)可以進(jìn)行事務(wù)處理,可以保證多個(gè)操作的一致性和完整性。
(3).數(shù)據(jù)庫(kù)可以進(jìn)行并發(fā)處理和多線程操作,可以提高數(shù)據(jù)處理的效率。
(4).數(shù)據(jù)庫(kù)能夠?qū)?shù)據(jù)進(jìn)行備份和恢復(fù),可以提高數(shù)據(jù)的安全性。
(5).數(shù)據(jù)庫(kù)還可以進(jìn)行數(shù)據(jù)的分析和處理,為業(yè)務(wù)提供更多的可能性。
綜上所述,將爬取數(shù)據(jù)存儲(chǔ)到MySQL數(shù)據(jù)庫(kù)更加靈活、高效、安全和便捷,
是更為理想的方式。
5數(shù)據(jù)統(tǒng)計(jì)與分析
5.1數(shù)據(jù)準(zhǔn)備
因?yàn)镴upyterNotebook操作簡(jiǎn)單方便,本次畢業(yè)設(shè)計(jì)選擇Jupyter
Notebook軟件進(jìn)行數(shù)據(jù)準(zhǔn)備。首先導(dǎo)入相關(guān)庫(kù),使用pandas存儲(chǔ)在txt文件的
數(shù)據(jù),選取部分字段,讀取前十條數(shù)據(jù)作為作為數(shù)據(jù)準(zhǔn)備,核心實(shí)現(xiàn)代碼如下,
數(shù)據(jù)準(zhǔn)備結(jié)果如圖5-1。
importpandasaspd
df=pd.read_csv(r'D:\pycharm\文件保存位置\python畢業(yè)設(shè)計(jì)\內(nèi)地榜數(shù)
23
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
據(jù).txt',sep='\t',engine='python',encoding='utf_8_sig')
df.head(10)
圖5-1
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國(guó)骨穿刺活檢針數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 部編版一年級(jí)語(yǔ)文下冊(cè)試題 《看圖寫(xiě)話》練習(xí)題(含答案)
- Unit2 How often do you exercise?Section A 1a~1c學(xué)案-2025年人教版八年級(jí)英語(yǔ)上冊(cè)(無(wú)答案)
- 車(chē)位買(mǎi)賣(mài)合同書(shū)
- 代為辦理房屋買(mǎi)賣(mài)手續(xù)合同
- 土方開(kāi)挖運(yùn)輸合同
- 岳西工廠隔音墻施工方案
- 生物學(xué)基因工程基礎(chǔ)概念試卷
- 培訓(xùn)計(jì)劃執(zhí)行情況表格-培訓(xùn)項(xiàng)目執(zhí)行
- 《初中幾何圖形的性質(zhì)與變化規(guī)律探索》
- 2025年安徽中醫(yī)藥高等??茖W(xué)校單招職業(yè)技能考試題庫(kù)帶答案
- 小學(xué)二年級(jí)下冊(cè)《勞動(dòng)》教案
- 2025年南京鐵道職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫(kù)及答案1套
- 2025年河南機(jī)電職業(yè)學(xué)院?jiǎn)握新殬I(yè)技能考試題庫(kù)完整
- 2025年湖南生物機(jī)電職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)技能測(cè)試題庫(kù)及參考答案
- 2025年深圳市高三一模英語(yǔ)試卷答案詳解講評(píng)課件
- 2025年黑龍江旅游職業(yè)技術(shù)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫(kù)一套
- 山東省聊城市冠縣2024-2025學(xué)年八年級(jí)上學(xué)期期末地理試卷(含答案)
- 敲響酒駕警鐘堅(jiān)決杜絕酒駕課件
- 2024年深圳市中考?xì)v史試卷真題(含答案解析)
- 2024年01月陜西2024年中國(guó)人民銀行陜西分行招考筆試歷年參考題庫(kù)附帶答案詳解
評(píng)論
0/150
提交評(píng)論