基于Python的咪咕音樂網(wǎng)站數(shù)據(jù)采集與分析_第1頁
基于Python的咪咕音樂網(wǎng)站數(shù)據(jù)采集與分析_第2頁
基于Python的咪咕音樂網(wǎng)站數(shù)據(jù)采集與分析_第3頁
基于Python的咪咕音樂網(wǎng)站數(shù)據(jù)采集與分析_第4頁
基于Python的咪咕音樂網(wǎng)站數(shù)據(jù)采集與分析_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

目錄

1引言............................................................................................................................1

1.1項(xiàng)目背景......................................................................................................1

1.2開發(fā)環(huán)境與工具..........................................................................................2

1.2.1Python簡介..........................................................................................2

1.2.2MySQL簡介............................................................................................3

1.2.3JupyterNotebook簡介......................................................................3

1.2.4PyCharm簡介........................................................................................4

2需求分析....................................................................................................................5

2.1可行性需求分析..........................................................................................5

2.2采集目標(biāo)功能分析......................................................................................6

2.3關(guān)鍵技術(shù)分析..............................................................................................6

2.3.1網(wǎng)絡(luò)爬蟲技術(shù).......................................................................................6

2.3.2文件存取技術(shù).......................................................................................8

2.3.3可視化技術(shù)...........................................................................................9

3數(shù)據(jù)采集..................................................................................................................10

3.1采集頁面分析............................................................................................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的咪咕音樂網(wǎng)站數(shù)據(jù)采集與分析

1引言

在當(dāng)今時(shí)代背景下,大數(shù)據(jù)與人工智能等計(jì)算機(jī)互聯(lián)網(wǎng)技術(shù)在為百姓民生

的各個(gè)方面提供了智能生活的技術(shù)基礎(chǔ)。

衣食住行、吃喝玩樂等方面產(chǎn)生的海量數(shù)據(jù)等待開發(fā)的價(jià)值愈來愈大,而

當(dāng)今這代人正處于這數(shù)據(jù)時(shí)代的狂潮中,抓住其中的機(jī)遇,便有飛黃騰達(dá)的機(jī)

會(huì)。

音樂領(lǐng)域產(chǎn)生的數(shù)據(jù)價(jià)值同樣具備如此,它作為一種文化藝術(shù)形式,在全

球范圍內(nèi)一直在不斷發(fā)展和演變。全球化和跨文化交流的增加,使得音樂風(fēng)格

越來越多樣化和包容性。人們對不同文化、民族和性別的音樂越來越包容和欣

賞,這也使得更多的音樂類型和藝術(shù)家能夠脫穎而出。

隨著數(shù)字技術(shù)的發(fā)展,音樂的傳播和消費(fèi)方式也發(fā)生了巨大的變化。流媒

體服務(wù)的興起使得音樂更加方便和易于獲取,同時(shí)也使得音樂產(chǎn)業(yè)的商業(yè)模式

發(fā)生了變化。音樂和其他藝術(shù)形式的跨領(lǐng)域合作越來越普遍。比如,音樂和電

影、游戲、時(shí)尚等領(lǐng)域的結(jié)合,創(chuàng)造出了更加豐富和有趣的作品。

總的來說,音樂發(fā)展的現(xiàn)狀和趨勢是多樣性、數(shù)字化、跨界合作、可持續(xù)

發(fā)展和社交媒體化。隨著技術(shù)的不斷發(fā)展和人們對音樂的需求不斷變化,音樂

產(chǎn)業(yè)也將繼續(xù)不斷創(chuàng)新和發(fā)展。因此,音樂領(lǐng)域所產(chǎn)生的數(shù)據(jù)價(jià)值也越來越不

可忽視。

1.1項(xiàng)目背景

隨著網(wǎng)絡(luò)技術(shù)的進(jìn)步,人們不僅能夠通過網(wǎng)絡(luò)學(xué)習(xí),還能夠享受各種附帶

產(chǎn)品的好處,諸如網(wǎng)絡(luò)音樂和游戲和小說等等。

越來越多的人選擇在網(wǎng)上聽音樂、下載音樂。因此,了解音樂的流行程度

和市場趨勢就變得尤為重要。對于一家音樂公司而言,需要將音樂網(wǎng)站中產(chǎn)生

的數(shù)據(jù)價(jià)值挖掘出來,為公司的發(fā)展帶來更多的利益空間。那么,就需要對自

己運(yùn)營的音樂網(wǎng)站爬取統(tǒng)計(jì)出有用的信息,而爬取音樂排行榜網(wǎng)站數(shù)據(jù)是數(shù)據(jù)

挖掘技術(shù)在實(shí)際中的應(yīng)用。

因此,在這樣一個(gè)背景下,爬取音樂排行榜網(wǎng)站數(shù)據(jù)并做出分析對于用戶

和企業(yè)都有巨大的價(jià)值。它可以幫助用戶快速得到最新、最熱門的歌曲信息,

1

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

并且基于數(shù)據(jù)分析和推薦算法來為用戶提供針對性和個(gè)性化的推薦服務(wù)。對于

商業(yè)公司而言,也能夠通過對用戶口味和偏好進(jìn)行深入分析,為公司提供更加

精細(xì)化的市場調(diào)研和宣傳方案。

爬取音樂排行榜網(wǎng)站數(shù)據(jù)還可以具有學(xué)術(shù)研究價(jià)值。比如可以研究某段時(shí)

間內(nèi)不同地區(qū)或群體喜歡哪些類型、風(fēng)格、歌手的音樂,從中發(fā)現(xiàn)一些文化現(xiàn)

象并進(jìn)行深入思考。

本次畢業(yè)設(shè)計(jì)就是獲取咪咕音樂網(wǎng)站的音樂排行榜中的歌曲信息,以下是

爬取歌曲信息并對數(shù)據(jù)進(jìn)行處理和可視化的操作步驟。

首先對大型咪咕音樂網(wǎng)站排行榜的網(wǎng)頁源代碼進(jìn)行網(wǎng)頁解析,然后爬取歌

曲的網(wǎng)址后,再對歌曲地址進(jìn)行一次網(wǎng)頁解析后獲取詳細(xì)的歌曲信息。接下來,

將爬取得到的歌曲數(shù)據(jù)進(jìn)行數(shù)據(jù)清洗和分析,保證數(shù)據(jù)的完整性和準(zhǔn)確性。最

后再采取可視化技術(shù)將處理后的數(shù)據(jù)用圖表的形式展示,得到相應(yīng)的數(shù)據(jù)信息

結(jié)論。

1.2開發(fā)環(huán)境與工具

1.2.1Python簡介

Python是由荷蘭數(shù)學(xué)家和計(jì)算機(jī)科學(xué)研究學(xué)會(huì)的吉多·范羅蘇姆在20世

紀(jì)90年代初設(shè)計(jì)開發(fā)的一種解釋型編程語言。

Python語言最大的特點(diǎn)就是簡單,語法簡潔明了,初學(xué)者也容易掌握。相

較于其他編程語言,Python實(shí)現(xiàn)同一功能的代碼通常最短,而且Python的第三

方庫足夠豐富、免費(fèi)開源、支持跨多平臺(tái)且可移植性強(qiáng)。

Python可以用于編寫網(wǎng)絡(luò)爬蟲,從而可以爬取咪咕音樂網(wǎng)站排行榜的歌單

數(shù)據(jù)信息。具體地說,可以使用Python中的第三方庫(例如requests、re、etree

等)來模擬瀏覽器請求數(shù)據(jù),然后解析HTML或XML文件,提取出排行榜相關(guān)的

信息。

以咪咕音樂排行榜網(wǎng)站為例,可以使用requests、正則表達(dá)式和Xpath庫

向網(wǎng)頁發(fā)送請求并解析HTML內(nèi)容,在解析過程中篩選出有用的信息,如歌單網(wǎng)

址、歌曲名稱、歌手、歌曲專輯等等。通過分析網(wǎng)頁源代碼,可以發(fā)現(xiàn)音樂排

行榜數(shù)據(jù)存儲(chǔ)在特定的URL上,因此只需要構(gòu)造相應(yīng)的URL并發(fā)送請求即可獲

取大量排行榜數(shù)據(jù)。

總的來說,Python作為一種通用編程語言,在網(wǎng)絡(luò)爬蟲領(lǐng)域有著廣泛的應(yīng)

用。利用Python網(wǎng)絡(luò)爬蟲具有高效、便捷和靈活性強(qiáng)等優(yōu)點(diǎn),還能支持多種數(shù)

2

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

據(jù)存儲(chǔ)格式(如文本文件、數(shù)據(jù)庫等)。

同時(shí),Python還包含大量的第三方庫,以下是本次畢業(yè)設(shè)計(jì)所涉及到的相

關(guān)庫介紹。

(1).Requests:HTTP協(xié)議訪問及網(wǎng)絡(luò)爬蟲庫,比urllib使用更簡潔。

(2).Re:正則表達(dá)式解析和處理功能庫,里面包含了多種字符串匹配的方

法。

(3).Csv:csv屬于python中的內(nèi)置模塊,它能夠讀取csv格式的文件或者

將數(shù)據(jù)存入到csv表格中,也能讀取txt格式文件或者將數(shù)據(jù)存入到txt表格

中。

(4).NumPy:處理數(shù)據(jù)類型相同的多維數(shù)組庫,NumPy庫的數(shù)據(jù)結(jié)構(gòu)比

Python自帶的更加高效。

(5).Pandas:基于NumPy的Python數(shù)據(jù)分析高層次應(yīng)用庫。提供了易用的

數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)分析工具,操作索引即操作數(shù)據(jù)。

(6).Matplotlib:繪圖庫,主要是偏向于二維繪圖包括折線圖、條形圖、

扇形圖、散點(diǎn)圖、直方圖等等。

1.2.2MySQL簡介

MySQL是一款由瑞典MySQLAB公司研發(fā)的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),現(xiàn)屬于

Oracle旗下產(chǎn)品,標(biāo)志為海豚,象征其讀寫速度快、準(zhǔn)確無誤。

相較于儲(chǔ)存所有數(shù)據(jù)于同一倉庫內(nèi),MySQL采用關(guān)系型儲(chǔ)存方式,將數(shù)據(jù)分

散至不同表中,提高了速度和靈活性。其安全、高效且與多款主流計(jì)算機(jī)語言

高度兼容,是當(dāng)前最受歡迎的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)之一。除此之外,其開放

源碼的特點(diǎn)也使得中小型和大型網(wǎng)站廣泛采用。

MySQL可以用來存儲(chǔ)和處理大量的結(jié)構(gòu)化數(shù)據(jù),而本次畢業(yè)設(shè)計(jì)爬取的咪咕

音樂網(wǎng)站排行榜歌曲數(shù)據(jù)就是大量的結(jié)構(gòu)化數(shù)據(jù),所以這也是選擇它作為數(shù)據(jù)

存儲(chǔ)的理由。

MySQL除了存儲(chǔ)功能,還可以用于查詢、更新和刪除數(shù)據(jù)等操作。因此,可

以通過SQL語句將存儲(chǔ)到MySQL數(shù)據(jù)庫的歌單數(shù)據(jù)進(jìn)行高效、靈活和精確的查

詢和分析,從而快速了解用戶需求和流行趨勢,并做出相應(yīng)的決策。

1.2.3JupyterNotebook簡介

JupyterNotebook是一款兼容性強(qiáng)的基于Web的開源應(yīng)用軟件,它的文本

和代碼編輯功能非常強(qiáng)大且交互性良好。無論是進(jìn)行數(shù)據(jù)分析還是邏輯整理,

3

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

使用JupyterNotebook都能事半功倍。它不僅支持Python,還支持其他40多

種編程語言,并繼承了IPython的所有優(yōu)點(diǎn)。

正是因?yàn)檫@些特性,讓JupyterNotebook在機(jī)械學(xué)習(xí),數(shù)據(jù)清洗、數(shù)據(jù)分

析、數(shù)據(jù)挖掘等領(lǐng)域得到眾多程序員的喜愛。對于初學(xué)者來說安裝Jupyter

Notebook的方法就是安裝Anaconda。因?yàn)锳naconda是免費(fèi)的,可以輕松地完

成該軟件的下載和安裝。

JupyterNotebook具備交互式計(jì)算環(huán)境,它可以讓用戶在瀏覽器中編寫、

運(yùn)行和共享代碼。使用JupyterNotebook對爬取音樂網(wǎng)站排行榜的數(shù)據(jù)進(jìn)行數(shù)

據(jù)清洗主要具備以下優(yōu)勢。

(1).JupyterNotebook支持Python語言,而Python是一種流行的網(wǎng)絡(luò)爬

蟲和數(shù)據(jù)處理語言。可以在JupyterNotebook中使用Python進(jìn)行音樂排行榜數(shù)

據(jù)的網(wǎng)頁抓取、數(shù)據(jù)清洗、分析和可視化等操作。

(2).JupyterNotebook還支持Markdown語法,可以直接在Notebook中添

加富文本內(nèi)容、公式、鏈接等元素。這些功能可以幫助你更好地記錄和分享代

碼思路、實(shí)驗(yàn)結(jié)果和心得體會(huì)。

綜上所述,JupyterNotebook通過結(jié)合Python語言和豐富的插件庫,可以

高效地實(shí)現(xiàn)對咪咕音樂排行榜歌曲數(shù)據(jù)的數(shù)據(jù)清洗以及簡單方便的數(shù)據(jù)準(zhǔn)備。

1.2.4PyCharm簡介

PyCharm是一款Python集成開發(fā)環(huán)境,在當(dāng)下非常流行。它具有良好的編

碼、調(diào)試、版本控制和測試工具,可以幫助程序員更方便地編寫優(yōu)秀的Python

代碼。而對于爬蟲爬取咪咕音樂排行榜的歌曲數(shù)據(jù)信息來說,PyCharm也可以提

供許多便利。

首先,PyCharm集成了強(qiáng)大的Python調(diào)試器。在爬蟲的開發(fā)過程中,會(huì)遇

到許多錯(cuò)誤,例如請求超時(shí)、頁面解析錯(cuò)誤等。這時(shí),可以使用PyCharm的調(diào)

試工具手動(dòng)調(diào)試代碼,定位問題并修復(fù)。調(diào)試工具可以其逐行執(zhí)行代碼,并監(jiān)

視變量和引用。這可以大大提高代碼調(diào)試的效率和準(zhǔn)確性。

其次,PyCharm同樣提供了出色的編碼實(shí)用工具。爬蟲編碼通常會(huì)包含大量

字符串操作、正則表達(dá)式處理和編碼轉(zhuǎn)換。PyCharm內(nèi)置了很多實(shí)用的插件,可

以使這些操作更加簡單和高效。例如,它可以自動(dòng)補(bǔ)全變量名和方法名稱,高

亮語法錯(cuò)誤和代碼警告,快速跳轉(zhuǎn)到變量定義和查看文檔,以及執(zhí)行快捷鍵自

動(dòng)生成代碼。這些功能可以讓程序員更加專注于開發(fā)和調(diào)試自己的代碼,而不

必?fù)?dān)心代碼中不必要的錯(cuò)誤和繁瑣的細(xì)節(jié)。

4

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

最后,PyCharm在測試方面也提供了很大的支持。任何程序都需要經(jīng)過完整

和準(zhǔn)確的測試,以保證其在生產(chǎn)環(huán)境中能夠正常運(yùn)行。PyCharm可以為其生成測

試框架和測試報(bào)告,并支持持續(xù)集成和測試,提高代碼的完整性和準(zhǔn)確性。

本次畢業(yè)設(shè)計(jì)主要依靠PyCharm開發(fā)工具完成對咪咕音樂排行榜數(shù)據(jù)的爬

取,存儲(chǔ)實(shí)現(xiàn)和可視化功能。

在爬取咪咕音樂排行榜歌曲相關(guān)數(shù)據(jù)信息時(shí),用PyCharm可以更加輕松、

快捷地開發(fā)出高效的爬蟲程序,并在保證程序穩(wěn)定運(yùn)行的前提下,不斷地迭代

和更新爬蟲業(yè)務(wù)邏輯。

總的來說,PyCharm提供的強(qiáng)大的編碼、調(diào)試和測試工具使其成為爬蟲開發(fā)

的理想工具。其內(nèi)置的各種實(shí)用插件可以大大提高代碼開發(fā)的效率和準(zhǔn)確性。

2需求分析

2.1可行性需求分析

(1).政策可行性

首先需確認(rèn),是否有可以合法獲取數(shù)據(jù)的渠道和方式。需要了解音樂網(wǎng)站

的相關(guān)規(guī)定和政策,是否允許第三方爬取其數(shù)據(jù)??傊诤戏ǖ臈l件下,

爬取可行的音樂網(wǎng)站排行榜數(shù)據(jù)。

(2).技術(shù)可行性

本次畢業(yè)設(shè)計(jì)中將使用Python語言來實(shí)現(xiàn)數(shù)據(jù)獲取,數(shù)據(jù)清洗,數(shù)據(jù)可視

化等操作。在數(shù)據(jù)獲取的過程中遇到一些問題,通過抓包分析發(fā)現(xiàn)咪咕音樂網(wǎng)

站歌單信息頁面的數(shù)據(jù)是動(dòng)態(tài)傳輸?shù)?,所以通過瀏覽器控制臺(tái)可以獲取請求和

其參數(shù)。得到網(wǎng)頁面數(shù)據(jù)的返回值。

然后將獲取的原始數(shù)據(jù)儲(chǔ)存到txt文件,以便在后續(xù)的數(shù)據(jù)預(yù)處理和可視

化中再進(jìn)行調(diào)用。最后再將處理過后的數(shù)據(jù)存入MySQL數(shù)據(jù)庫中做持久化儲(chǔ)存。

以上為此次畢業(yè)設(shè)計(jì)的技術(shù)可行性,在后續(xù)的工作中會(huì)將所有的步驟實(shí)現(xiàn)

到位,并保證數(shù)據(jù)的準(zhǔn)確性和安全性。

(3).需求可行性

優(yōu)美動(dòng)聽的音樂可以放松人的心情,是人們在苦燥煩悶時(shí)極佳的“調(diào)味

劑”。有時(shí),有音樂的陪伴,會(huì)溫暖消冷的心神。

本次畢業(yè)設(shè)計(jì)通過爬取咪咕音樂排行榜的數(shù)據(jù),來分析當(dāng)日排行榜上的歌

曲信息。然后從歌手、標(biāo)簽、專輯等方面對其進(jìn)行深度剖析,分析出有價(jià)值的

信息,最后通過數(shù)據(jù)可視化得出結(jié)論。

5

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

(4).數(shù)據(jù)可行性

在獲取到所需數(shù)據(jù)后,需要對這些數(shù)據(jù)進(jìn)行清洗、處理、統(tǒng)計(jì)等分析工作。

因此,在開始之前需要確定所要收集的數(shù)據(jù)類型與數(shù)量,并明確使用何種方法

來對數(shù)據(jù)進(jìn)行處理以滿足畢業(yè)設(shè)計(jì)指標(biāo)要求。

2.2采集目標(biāo)功能分析

本次畢業(yè)設(shè)計(jì)的數(shù)據(jù)集來源為咪咕音樂排行榜網(wǎng)站,通過Python爬取咪咕

音樂所有排行榜上歌曲的信息。所選擇的音樂排行榜榜單分別有新歌榜,熱歌

榜,原創(chuàng)榜,影視榜,內(nèi)地榜,港臺(tái)榜,歐美榜,日韓榜,KTV榜,網(wǎng)絡(luò)榜和彩

鈴榜。獲取的目標(biāo)數(shù)據(jù)分別是歌單排名,歌曲名稱,演唱者,作詞者,作曲者,

所屬專輯以及音樂標(biāo)簽。

對獲取的數(shù)據(jù)進(jìn)行去重、過濾無效信息,格式轉(zhuǎn)換等操作,生成規(guī)范化的

數(shù)據(jù)表格。數(shù)據(jù)清洗后共860條記錄,爬取完成后盡可能的去檢查數(shù)據(jù)的準(zhǔn)確

性,確保爬取的數(shù)據(jù)無誤并且是屬于咪咕音樂實(shí)時(shí)存在的排行榜歌曲信息。

將獲取到并處理后的數(shù)據(jù)保存到MySQL數(shù)據(jù)庫中,在后續(xù)進(jìn)行分析時(shí)可以

隨時(shí)調(diào)用使用。將采集到的數(shù)據(jù)通過柱形圖、折線圖表形式展示,方便用戶查

看和理解相應(yīng)的音樂歌曲信息。

最后對數(shù)據(jù)表進(jìn)行多個(gè)維度的分析后詳細(xì)的闡述。例如,從各歌曲的標(biāo)簽

對其進(jìn)行分析,查看排行榜中跟音樂最緊密相關(guān)的標(biāo)簽。也可以通過獲取歌手

的歌曲沖上排行榜的總數(shù),分析出當(dāng)日受歡迎的歌手有哪些。

2.3關(guān)鍵技術(shù)分析

2.3.1網(wǎng)絡(luò)爬蟲技術(shù)

網(wǎng)絡(luò)爬蟲是指通過程序自動(dòng)抓取互聯(lián)網(wǎng)上的信息的技術(shù),而爬取音樂網(wǎng)站

排行榜數(shù)據(jù)正是網(wǎng)絡(luò)爬蟲技術(shù)的一種應(yīng)用。在這個(gè)場景下,網(wǎng)絡(luò)爬蟲可以自動(dòng)

從目標(biāo)音樂網(wǎng)站上獲取所需數(shù)據(jù),然后進(jìn)行清洗和處理,最終生成規(guī)范化的數(shù)

據(jù)表格。因此,可以說網(wǎng)絡(luò)爬蟲是實(shí)現(xiàn)爬取音樂網(wǎng)站排行榜數(shù)據(jù)的關(guān)鍵技術(shù)之

一。

爬取音樂排行榜數(shù)據(jù)需要使用一種特定的爬蟲技術(shù),以適應(yīng)音樂網(wǎng)站的結(jié)

構(gòu)和數(shù)據(jù)格式,常見的包括:

(1).正則表達(dá)式:使用正則表達(dá)式的模式匹配,可以更準(zhǔn)確地從網(wǎng)頁源代

碼中提取所需的數(shù)據(jù)。

6

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

(2).Xpath:使用XPath語言可以解析網(wǎng)頁中的HTML元素,并定位到所需

的數(shù)據(jù)。它是一種非常靈活的解析方法,可以在網(wǎng)頁結(jié)構(gòu)變化時(shí)動(dòng)態(tài)適應(yīng)。

(3).BeautifulSoup:這是Python的一個(gè)HTML解析庫,可以讓開發(fā)者能夠

快速、方便地從網(wǎng)頁中找到所需的數(shù)據(jù)。

(4).Scrapy:這是Python的一個(gè)高級網(wǎng)絡(luò)爬蟲框架,它可以處理大規(guī)模的

網(wǎng)頁數(shù)據(jù)爬取,并支持分布式爬蟲的部署。除了以上技術(shù)外,還需要一些數(shù)據(jù)

持久化技術(shù),例如將爬取的數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫中,以便于后續(xù)處理和分析。

本次畢業(yè)設(shè)計(jì)選取的爬蟲技術(shù)為正則表達(dá)式和Xpath,以下是對它們的詳細(xì)

闡述以及對應(yīng)的實(shí)現(xiàn)代碼。

(1).正則表達(dá)式

正則表達(dá)式可以對字符、字符串、數(shù)字等不同數(shù)據(jù)類型進(jìn)行匹配,具有很

強(qiáng)的靈活性,而且引擎的實(shí)現(xiàn)方式精簡高效,可以快速地處理大量的數(shù)據(jù),并

且預(yù)定義為一個(gè)模板,以后可以直接調(diào)用,實(shí)現(xiàn)代碼的重用。除了單個(gè)字符匹

配之外,正則表達(dá)式還可以用于處理字符集合,比如匹配一個(gè)含有某些字符的

字符串、匹配郵箱地址等。

本次編程利用正則表達(dá)式完成歌單地址ID值的獲取。先通過正則表達(dá)式的

research方法先將爬取的網(wǎng)頁源代碼截取到存放歌單地址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完美兼容的語言,用于解析XML及HTML文檔非常方

便,可以直接從屬性或元素中提取所需內(nèi)容而無需分析整個(gè)文檔結(jié)構(gòu)。而且結(jié)

7

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

構(gòu)清晰簡單,易于編寫和學(xué)習(xí),精通XPath語言可以很快地提高數(shù)據(jù)抓取速度。

可以實(shí)現(xiàn)各種復(fù)雜的數(shù)據(jù)提取操作,避免錯(cuò)誤和無用內(nèi)容。

本次編程利用Xpath完成目標(biāo)數(shù)據(jù)的收集。先將爬取的源代碼轉(zhuǎn)換為標(biāo)準(zhǔn)

的html格式,然后通過xpath方法在html格式的源代碼中依次獲取歌名、歌

手、作詞者、作曲者、專輯和音樂標(biāo)簽的信息,并把它們存儲(chǔ)到音樂信息列表

后返回,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ò)爬蟲的txt文件存儲(chǔ)技術(shù)是指將爬取的數(shù)據(jù)存儲(chǔ)在文本文件中,使用

文本文件存儲(chǔ)方式具有以下優(yōu)點(diǎn):

(1).簡單易用:文本文件格式簡單,存儲(chǔ)和讀取都非常方便,不需要專門

的數(shù)據(jù)庫管理技術(shù)。

(2).高效性:由于文本文件不需要額外的程序或庫支持,因此在處理小型

數(shù)據(jù)時(shí)能夠獲得較高的讀取和寫入速度。

(3).兼容性:文本文件是常見的數(shù)據(jù)格式,可以在不同的操作系統(tǒng)、軟件平

臺(tái)和程序中讀取和使用。

(4).便于共享:爬蟲數(shù)據(jù)存儲(chǔ)在文本文件中,便于共享和傳輸。

8

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

(5).易于維護(hù)和備份:文本文件的結(jié)構(gòu)簡單,易于備份,可以手工編輯和

修改,使數(shù)據(jù)的維護(hù)和管理更加方便。

本次畢業(yè)設(shè)計(jì)存儲(chǔ)咪咕音樂排行榜歌單數(shù)據(jù)所采用的文件存儲(chǔ)技術(shù)就是利

用txt文件存儲(chǔ)技術(shù)。在Python代碼中,以追加的方式打開一個(gè)文件,然后遍

歷已經(jīng)獲取的榜單數(shù)據(jù)信息,利用換行和制表符將其以合適的格式存儲(chǔ)下來,

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ù)、

信息等抽象概念通過可視化方式展現(xiàn)出來的技術(shù)。它將數(shù)據(jù)、信息轉(zhuǎn)換成直觀、

易于理解和掌握的圖形,讓人們可以通過直觀感受來獲取深層次的數(shù)據(jù)信息,

從而更好地發(fā)現(xiàn)數(shù)據(jù)中隱藏的規(guī)律和趨勢。

可視化技術(shù)可以將爬取到的音樂排行榜歌單數(shù)據(jù)通過各種圖表、地圖、動(dòng)

態(tài)圖等形式來展示,進(jìn)行可視化呈現(xiàn),從而更直觀、生動(dòng)、形象地展示音樂排

行榜中歌手,專輯和歌曲標(biāo)簽等多個(gè)方面的信息。

本次畢業(yè)設(shè)計(jì)使用pycharm工具,實(shí)現(xiàn)對排行榜歌單數(shù)據(jù)的可視化技術(shù)。

其中,用pandas庫讀取存儲(chǔ)在txt文件的歌單數(shù)據(jù),用matplotlib庫和

pycharts庫將爬取的數(shù)據(jù)進(jìn)行圖表可視化展示。

選擇的展示圖表分別是詞云圖、餅圖和柱狀圖,以下是對這些圖表功能特

點(diǎn)的介紹,這也是為什么要展現(xiàn)為這幾種圖的原因。

(1).詞云圖

詞云圖是一種基于文字的可視化技術(shù),它將文本信息通過顏色、字體大小、

重心標(biāo)示等視覺手段展現(xiàn)出來,從而更加直觀地呈現(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化的信息,加速了對數(shù)據(jù)的分析過程。而且有多種形式可以選擇,如

基于形狀的詞云圖、基于位置的詞云圖、基于顏色的詞云圖等??梢愿鶕?jù)不同

的數(shù)據(jù)類型和展示目標(biāo)進(jìn)行調(diào)整,提高了可視化的靈活性。

同時(shí)也能夠更加有效地傳遞信息,而且傳遞的信息準(zhǔn)確性和精度較高,具

有較高的可靠性。詞云圖還能夠展示單詞之間的相關(guān)性,使得用戶可以深入的

理解數(shù)據(jù)背后的信息。

(2).餅圖

餅圖是一種基于數(shù)據(jù)的可視化技術(shù),將數(shù)據(jù)分割為幾塊“餅狀”區(qū)域,并

用不同的顏色或其他可視化方式來區(qū)分每個(gè)部分的大小或重要程度。

餅圖易于理解和使用,而且不需要專業(yè)的統(tǒng)計(jì)和計(jì)算知識(shí)。餅圖可以非常

清楚地顯示不同部分的比例及其在整體中的占比情況,使得人們可直觀感受到

每個(gè)部分在整體中的重要性。可以通過多種色彩、圖案等方式來區(qū)分不同部分,

使圖表顯示的信息更具吸引力??梢杂糜诒容^個(gè)體與總體的比例,比較不同時(shí)

間段或不同地區(qū)的數(shù)據(jù)差異,有助于更快速準(zhǔn)確地觀察和分析數(shù)據(jù)。

(3).柱狀圖

柱狀圖是一種基于數(shù)據(jù)的可視化技術(shù),通過使用柱形展示每個(gè)數(shù)據(jù)的大小、

高度或長度。

柱狀圖可以幫助人們更直觀地理解數(shù)據(jù),尤其是對于非常大的數(shù)據(jù)集而言。

可以顯示不同組數(shù)據(jù)的差異。柱狀圖也可以通過交互來幫助用戶更深入地探索

數(shù)據(jù)。例如,用戶可以通過鼠標(biāo)懸停在某個(gè)柱子上來獲得詳細(xì)信息。

比如,可以使用折線圖或柱狀圖展示不同歌曲或不同曲風(fēng)的排名變化,使

用地圖可以展示不同地域的音樂受眾分布,使用動(dòng)態(tài)圖可以展示不同時(shí)間段內(nèi)

的音樂排行榜變化趨勢。

除此之外,可視化技術(shù)還可以讓數(shù)據(jù)更加生動(dòng)、具體,有助于人們更好地

理解、分析和處理數(shù)據(jù),更快速、全面地獲取數(shù)據(jù)背后的規(guī)律和趨勢。因此,

在爬取咪咕音樂排行榜數(shù)據(jù)時(shí),將抓取到的數(shù)據(jù)進(jìn)行可視化呈現(xiàn),將非常有益

于數(shù)據(jù)的分析和應(yīng)用。

3數(shù)據(jù)采集

3.1采集頁面分析

首先通過谷歌瀏覽器搜索咪咕音樂的官方網(wǎng)頁,進(jìn)入官網(wǎng)后找到并切換到

10

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

音樂榜單,從這獲取咪咕尖叫榜和咪咕特色榜下拉欄的所有音樂排行榜網(wǎng)址,示

例圖如圖3-1。

圖3-1咪咕音樂排行榜榜單圖

然后,選取尖叫新歌榜進(jìn)行進(jìn)行頁面分析,尖叫新歌榜的URL為:

/v3/music/top/jianjiao_hotsong。點(diǎn)擊頁面下方的分

頁按鈕,同時(shí)觀察URL,發(fā)現(xiàn)URL沒有變化,示例圖如圖3-2,3-3。

圖3-2尖叫新歌榜第1頁圖

11

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

圖3-3尖叫新歌榜第2頁圖

按F12調(diào)出開發(fā)者工具,選擇瀏覽器控制臺(tái)的Network面板,然后刷新頁

面,當(dāng)請求頁面刷新出尖叫新歌榜的請求信息時(shí),選擇該請求信息,將標(biāo)簽定

位到Headers標(biāo)頭,分析尖叫新歌榜的請求信息,如圖3-4。

圖3-4開發(fā)者工具圖

通過分析,得到該網(wǎng)址的請求方式是get請求。將瀏覽器控制臺(tái)切換到

Console面板,準(zhǔn)備分析網(wǎng)頁是靜態(tài)網(wǎng)頁還是動(dòng)態(tài)網(wǎng)頁。

在命令行中輸入“alert(document.lastModified);”,彈出窗口會(huì)記錄時(shí)

間,隨著多次刷新頁面,如果時(shí)間也會(huì)不斷變化的話,則證明該網(wǎng)頁是動(dòng)態(tài)網(wǎng)

12

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

頁,示例圖如圖3-5,3-6。

圖3-5網(wǎng)站彈出時(shí)間1圖

圖3-6網(wǎng)站彈出時(shí)間2圖

為了進(jìn)一步爬取動(dòng)態(tài)網(wǎng)頁數(shù)據(jù),先選擇點(diǎn)開幾個(gè)歌曲,分析他們的網(wǎng)址,

經(jīng)對比發(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)推測,該值應(yīng)該是歌單的網(wǎng)址路徑ID值。經(jīng)網(wǎng)頁爬取排查發(fā)現(xiàn),

只有網(wǎng)頁源代碼<scripts>標(biāo)簽下面所有歌曲的路徑ID值是可獲取到的,示例

圖如圖3-9,3-10。驗(yàn)證推測后,通過這種方式爬取所有歌單地址。

14

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

圖3-9網(wǎng)頁源代碼的歌曲ID值圖

圖3-10經(jīng)爬取驗(yàn)證的歌曲ID值圖

總的來說,在對咪咕音樂排行榜的網(wǎng)站進(jìn)行頁面分析時(shí),也遇到了不少難

題,比如爬蟲知識(shí)儲(chǔ)備的缺漏,不知道如何分辨網(wǎng)頁動(dòng)態(tài)與靜態(tài),在確認(rèn)歌曲

的路徑ID時(shí),尋找那個(gè)ID值才是所需要的。不過,最終所有的難題都通過查

詢大量的參考資料得到了有效的解決。

3.2字段分析

進(jìn)入咪咕音樂尖叫新歌榜的其中一個(gè)歌單網(wǎng)址,按F12調(diào)出開發(fā)者工具,

選擇瀏覽器控制臺(tái)的Element面板,通過資源定位符,找到歌單信息集中的位

15

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

置,然后分析信息字段爬取的方式,示例圖如圖3-11。

圖3-11歌曲字段信息圖

咪咕音樂排行榜的歌曲字段分析相對簡單,沒有什么問題,只要確認(rèn)好歌

單信息的源代碼解析方式就行。

3.3編程實(shí)現(xiàn)

對網(wǎng)站進(jìn)行采集頁面和頁面字段等細(xì)節(jié)的分析后,準(zhǔn)備實(shí)現(xiàn)編程需求,完

成數(shù)據(jù)采集功能。首先導(dǎo)入爬取網(wǎng)站所需要的庫,為爬取網(wǎng)站提供相應(yīng)方法。

#導(dǎo)入庫

importrequests

fromlxmlimportetree

importre

然后設(shè)置請求頭,模擬瀏覽器訪問網(wǎng)站。

#設(shè)置請求頭

headers={

'User-Agent':'User-Agent:Mozilla/5.0(WindowsNT6.1)AppleWebKit/537.36(KHTML,

likeGecko)Chrome/63.0.3239.132Safari/537.36'

}

配置好爬蟲的環(huán)境后,實(shí)現(xiàn)數(shù)據(jù)采集需求,完成咪咕音樂各榜單的歌單信

息爬取,詳細(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)頁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ù)信息后,需要對數(shù)據(jù)進(jìn)行預(yù)處理,也就是數(shù)據(jù)清洗

和檢查,確定爬取的數(shù)據(jù)是否存在無效值,并要保證數(shù)據(jù)的一致性。這個(gè)對于

信息質(zhì)量的評估是一項(xiàng)很重要的任務(wù)。不僅如此,還要將數(shù)據(jù)進(jìn)行有理化和有

序化,這樣處理后的數(shù)據(jù)才能在調(diào)用共享過程中方便很多開發(fā)人員對數(shù)據(jù)信息

的使用。

本次畢業(yè)設(shè)計(jì)中通過JupyterNotebook軟件進(jìn)行數(shù)據(jù)清洗,將爬下來的咪

咕音樂排行榜的歌曲數(shù)據(jù)和網(wǎng)頁原數(shù)據(jù)進(jìn)行比對,檢查內(nèi)容是否存在空值、錯(cuò)

值,還有數(shù)據(jù)的位置是否正確,并對不同問題的數(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)備頁面圖

然后使用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)過查驗(yàn),發(fā)現(xiàn)數(shù)據(jù)并沒有重復(fù)值。接下來,使用isnull()方法判斷數(shù)

據(jù)是否存在缺失值,參考示例如圖4-3。

圖4-3數(shù)據(jù)缺失值查驗(yàn)圖

經(jīng)過數(shù)據(jù)查詢后發(fā)現(xiàn)數(shù)據(jù)也沒有存在缺失值,以同樣的方法,去處理其他

排行榜的數(shù)據(jù)。經(jīng)驗(yàn)證,內(nèi)地榜和其他排行榜的數(shù)據(jù)沒有漏洞、錯(cuò)亂或者空值

等問題。

接下來,根據(jù)需要,將有效數(shù)據(jù)進(jìn)行一致的統(tǒng)一規(guī)劃,并且去掉不需要的

行和列數(shù)據(jù),以避免冗余數(shù)據(jù)的影響,最終的數(shù)據(jù)清洗后的頁面效果如圖4-4

所示。

20

湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)

圖4-4內(nèi)地榜數(shù)據(jù)清洗完成界面圖

保留需要的行列數(shù)據(jù),整理為原網(wǎng)頁格式存入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ù)庫,數(shù)據(jù)庫分為關(guān)系

型和非關(guān)系型數(shù)據(jù)庫。關(guān)系型數(shù)據(jù)庫比較典型的有MySQL和Oracle等,非關(guān)系

型數(shù)據(jù)庫等以鍵值對形式儲(chǔ)存數(shù)據(jù),其中的代表有Mongodb、Redis等。

本次畢業(yè)設(shè)計(jì)用到的是txt、MySQL來實(shí)現(xiàn)數(shù)據(jù)儲(chǔ)存操作。首先,使用Python

的文件寫入方法將數(shù)據(jù)寫入到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')

然后,打開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)頁面圖

數(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ù)庫,用于存放數(shù)據(jù)表,實(shí)現(xiàn)代碼與結(jié)果如圖4-6。

圖4-6創(chuàng)建數(shù)據(jù)庫圖

創(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ì)

通過查詢數(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ù)庫,有以

下幾個(gè)原因:

(1).數(shù)據(jù)庫的數(shù)據(jù)結(jié)構(gòu)更為清晰和規(guī)范,可以更方便地進(jìn)行數(shù)據(jù)管理和查

詢。

(2).數(shù)據(jù)庫可以進(jìn)行事務(wù)處理,可以保證多個(gè)操作的一致性和完整性。

(3).數(shù)據(jù)庫可以進(jìn)行并發(fā)處理和多線程操作,可以提高數(shù)據(jù)處理的效率。

(4).數(shù)據(jù)庫能夠?qū)?shù)據(jù)進(jìn)行備份和恢復(fù),可以提高數(shù)據(jù)的安全性。

(5).數(shù)據(jù)庫還可以進(jìn)行數(shù)據(jù)的分析和處理,為業(yè)務(wù)提供更多的可能性。

綜上所述,將爬取數(shù)據(jù)存儲(chǔ)到MySQL數(shù)據(jù)庫更加靈活、高效、安全和便捷,

是更為理想的方式。

5數(shù)據(jù)統(tǒng)計(jì)與分析

5.1數(shù)據(jù)準(zhǔn)備

因?yàn)镴upyterNotebook操作簡單方便,本次畢業(yè)設(shè)計(jì)選擇Jupyter

Notebook軟件進(jìn)行數(shù)據(jù)準(zhǔn)備。首先導(dǎo)入相關(guān)庫,使用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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論