版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
目錄
1引言............................................................................................................................1
1.1項目背景........................................................................................................1
1.2開發(fā)環(huán)境與工具............................................................................................2
1.2.1Selenium簡介.....................................................................................2
1.2.2Pandas簡介........................................................................................2
1.2.3Pyecharts簡介.....................................................................................2
2需求分析....................................................................................................................3
2.1可行性需求分析............................................................................................3
2.2采集目標(biāo)功能分析........................................................................................3
2.3關(guān)鍵技術(shù)分析................................................................................................4
2.3.1網(wǎng)絡(luò)爬蟲技術(shù).....................................................................................4
2.3.2文件存取技術(shù).....................................................................................5
2.3.3可視化技術(shù).........................................................................................5
3數(shù)據(jù)采集....................................................................................................................6
3.1采集頁面分析................................................................................................6
3.2網(wǎng)頁結(jié)構(gòu)分析................................................................................................7
3.3代碼實現(xiàn)........................................................................................................7
3.4運行爬蟲程序................................................................................................9
4數(shù)據(jù)清洗與處理......................................................................................................12
4.1數(shù)據(jù)清洗......................................................................................................12
4.2編程實現(xiàn)......................................................................................................12
4.3運行代碼......................................................................................................13
5數(shù)據(jù)統(tǒng)計與分析......................................................................................................15
5.1數(shù)據(jù)準(zhǔn)備......................................................................................................15
5.2數(shù)據(jù)展示......................................................................................................16
5.2.1統(tǒng)計登入排行榜前十的歌曲...........................................................16
5.2.2統(tǒng)計每位歌手登入排行榜的次數(shù)...................................................18
I
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
5.2.3統(tǒng)計熱度上升最快的前十首歌.......................................................19
5.2.4統(tǒng)計各排行榜中歌曲的數(shù)量...........................................................19
5.3綜述..............................................................................................................20
6小結(jié)..........................................................................................................................21
參考資料.........................................................................................................................22
II
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
QQ音樂網(wǎng)站排行榜數(shù)據(jù)采集與分析
1引言
隨著互聯(lián)網(wǎng)的發(fā)展,音樂已成為人們生活中不可或缺的一部分,而音樂排
行榜則是反映著大眾音樂偏好和流行趨勢的重要指標(biāo)之一。本項目旨在對QQ
音樂網(wǎng)站的排行榜數(shù)據(jù)進(jìn)行采集與分析,以探索用戶對音樂的喜好和流行趨勢。
通過數(shù)據(jù)采集,我們將獲取QQ音樂網(wǎng)站排行榜頁面上的相關(guān)數(shù)據(jù),包括
歌曲名稱、歌手名、熱度等信息;隨后,利用數(shù)據(jù)清洗技術(shù)對采集到的數(shù)據(jù)進(jìn)
行處理,消除噪音和異常值,確保數(shù)據(jù)質(zhì)量;然后,借助數(shù)據(jù)分析技術(shù),對清
洗后的數(shù)據(jù)進(jìn)行統(tǒng)計和分析,深入挖掘其中的規(guī)律和趨勢;最后,通過數(shù)據(jù)可
視化技術(shù),將分析結(jié)果以直觀的圖表形式展示出來,為用戶提供了一種直觀、
簡潔的數(shù)據(jù)展示方式。通過這一系列步驟,我們將為用戶提供關(guān)于QQ音樂排
行榜的全面、準(zhǔn)確的數(shù)據(jù)洞察,助力用戶更好地了解音樂市場的動態(tài),做出更
明智的決策。
1.1項目背景
隨著數(shù)字化時代的發(fā)展,音樂已成為人們生活中不可或缺的一部分。在這
個背景下,音樂排行榜成為了反映音樂市場流行趨勢和用戶偏好的重要指標(biāo)之
一。QQ音樂作為中國最具影響力的音樂平臺之一,其排行榜數(shù)據(jù)包含了豐富
的音樂資源和用戶行為信息,具有極大的研究和應(yīng)用價值。
本項目的背景在于對QQ音樂排行榜數(shù)據(jù)進(jìn)行深入挖掘和分析,以獲取更
多關(guān)于音樂市場的信息,揭示用戶對音樂的喜好和流行趨勢。通過數(shù)據(jù)采集,
我們可以獲取到排行榜中的歌曲名稱、歌手名、熱度等相關(guān)信息;通過數(shù)據(jù)清
洗和處理,我們可以消除數(shù)據(jù)中的噪音和異常值,提高數(shù)據(jù)的質(zhì)量和可用性;
通過數(shù)據(jù)分析和可視化,我們可以深入挖掘數(shù)據(jù)中的規(guī)律和趨勢,為用戶提供
直觀、準(zhǔn)確的數(shù)據(jù)洞察。
在如今競爭激烈的音樂市場,了解用戶偏好和流行趨勢對于音樂平臺和音
樂從業(yè)者至關(guān)重要。通過本項目的實施,我們可以為相關(guān)機構(gòu)和個人提供有價
值的數(shù)據(jù)參考,幫助他們更好地了解市場動態(tài)、制定精準(zhǔn)的推廣策略,提升音
樂產(chǎn)品的競爭力和用戶體驗,實現(xiàn)音樂產(chǎn)業(yè)的可持續(xù)發(fā)展。
1
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
1.2開發(fā)環(huán)境與工具
1.2.1Selenium簡介
Selenium是一個廣泛用于Web應(yīng)用程序測試的自動化工具,但它也可用
于其他任務(wù),例如Web數(shù)據(jù)采集。它提供了一組工具和庫,使得可以通過編
程語言來模擬用戶在Web瀏覽器中的操作,例如點擊鏈接、填寫表單、提交
數(shù)據(jù)等。這種模擬用戶行為的能力使得Selenium成為了一種強大的網(wǎng)絡(luò)數(shù)據(jù)
采集工具。
Selenium可以與各種主流的網(wǎng)絡(luò)瀏覽器(如Chrome、Firefox、Safari
等)無縫集成,并且支持多種編程語言,包括Python、Java、C#等。它的工
作原理是通過WebDriver接口來控制瀏覽器的行為,使得可以通過編寫代碼
來模擬用戶在瀏覽器中的各種操作。
在數(shù)據(jù)采集與分析項目中,Selenium提供了一種有效的方式來獲取網(wǎng)頁
上的數(shù)據(jù),尤其是那些需要通過交互式操作才能獲得的數(shù)據(jù),如動態(tài)加載的內(nèi)
容或需要登錄后才能查看的信息。通過模擬用戶在瀏覽器中的操作,Selenium
可以讓我們訪問并提取這些數(shù)據(jù),從而實現(xiàn)對Web頁面的自動化數(shù)據(jù)采集。
Selenium是一種強大而靈活的工具,可用于模擬用戶在Web瀏覽器中的
各種操作,包括數(shù)據(jù)采集、網(wǎng)頁測試等任務(wù)。它的使用簡單且功能豐富,是許
多Web數(shù)據(jù)采集和自動化任務(wù)的首選工具之一。
1.2.2Pandas簡介
Pandas是一個強大的Python數(shù)據(jù)分析庫,提供了高效的數(shù)據(jù)結(jié)構(gòu)和數(shù)
據(jù)操作工具,廣泛應(yīng)用于數(shù)據(jù)清洗、處理、分析和可視化等領(lǐng)域。它的核心數(shù)
據(jù)結(jié)構(gòu)包括Series和DataFrame,可以靈活處理各種類型的數(shù)據(jù),并提供了
豐富的功能和方法,使得數(shù)據(jù)分析變得更加簡單和高效。
Pandas是Python數(shù)據(jù)分析領(lǐng)域的重要工具之一,它提供了簡單而強大
的數(shù)據(jù)結(jié)構(gòu)和功能,使得數(shù)據(jù)分析工作更加高效和便捷。無論是初學(xué)者還是專
業(yè)數(shù)據(jù)科學(xué)家,都可以通過Pandas來處理和分析各種類型的數(shù)據(jù),從而進(jìn)行
更深入的數(shù)據(jù)探索和洞察。
1.2.3Pyecharts簡介
Pyecharts提供了豐富的圖表類型和靈活的配置選項,可以幫助用戶輕松
創(chuàng)建各種精美的交互式圖表。作為一個Python庫,Pyecharts提供了簡單易
2
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
用的API,使得用戶可以通過編寫Python代碼來生成圖表,而無需手動編寫
復(fù)雜的JavaScript代碼。
Pyecharts支持的圖表類型包括折線圖、柱狀圖、餅圖、散點圖、地圖等,
幾乎涵蓋了常見的數(shù)據(jù)可視化需求。除了靜態(tài)圖表外,Pyecharts還支持創(chuàng)建
交互式圖表,用戶可以通過鼠標(biāo)交互來查看數(shù)據(jù)詳情、切換數(shù)據(jù)系列等,使得
數(shù)據(jù)展示更加生動和直觀。
2需求分析
2.1可行性需求分析
QQ音樂網(wǎng)站排行榜數(shù)據(jù)采集與分析項目的可行性需求分析涉及到以下幾
個方面:
數(shù)據(jù)獲?。篞Q音樂網(wǎng)站提供了豐富的音樂排行榜數(shù)據(jù),包括不同類型的
排行榜以及對應(yīng)的歌曲信息。這些數(shù)據(jù)可以通過網(wǎng)絡(luò)爬蟲工具如Selenium進(jìn)
行自動化采集,具有一定的可行性。
數(shù)據(jù)清洗:從網(wǎng)站上爬取的數(shù)據(jù)可能存在格式不規(guī)范、重復(fù)、缺失等問題,
需要進(jìn)行數(shù)據(jù)清洗和預(yù)處理。借助Python的Pandas庫,可以方便地進(jìn)行數(shù)據(jù)
清洗和整理,提高數(shù)據(jù)質(zhì)量。
數(shù)據(jù)分析:采集到的音樂排行榜數(shù)據(jù)可以進(jìn)行各種分析,如統(tǒng)計前十的歌
曲、分析歌手登榜次數(shù)、熱度上升最快的歌曲等。利用Python的數(shù)據(jù)分析工
具和統(tǒng)計方法,可以進(jìn)行深入的數(shù)據(jù)分析,挖掘數(shù)據(jù)背后的規(guī)律和趨勢。
數(shù)據(jù)可視化:通過Pyecharts等數(shù)據(jù)可視化工具,可以將分析結(jié)果以圖表
形式直觀展示,使得數(shù)據(jù)更加易于理解和傳達(dá)。這有助于從數(shù)據(jù)中發(fā)現(xiàn)新的見
解,為決策提供支持。
QQ音樂網(wǎng)站排行榜數(shù)據(jù)采集與分析項目具有一定的可行性,可以通過現(xiàn)
有的技術(shù)和工具實現(xiàn)數(shù)據(jù)的采集、清洗、分析和可視化,從而為用戶提供有價
值的音樂數(shù)據(jù)分析服務(wù)。
2.2采集目標(biāo)功能分析
QQ音樂網(wǎng)站排行榜數(shù)據(jù)采集與分析的采集目標(biāo)功能分析主要包括以下幾
個方面:
排行榜數(shù)據(jù)獲?。簩崿F(xiàn)對QQ音樂網(wǎng)站各種排行榜數(shù)據(jù)的自動化獲取,包
3
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
括不同類型的排行榜(如流行榜、新歌榜、熱歌榜等)以及對應(yīng)的歌曲信息
(歌曲名稱、歌手、排名、熱度等)。
數(shù)據(jù)清洗和預(yù)處理:對采集到的數(shù)據(jù)進(jìn)行清洗和預(yù)處理,包括去重、缺失
值處理、格式規(guī)范化等,以確保數(shù)據(jù)的質(zhì)量和準(zhǔn)確性,為后續(xù)的分析和可視化
提供可靠的數(shù)據(jù)基礎(chǔ)。
數(shù)據(jù)存儲和管理:將清洗和預(yù)處理后的數(shù)據(jù)存儲到數(shù)據(jù)庫或文件中,便于
后續(xù)的數(shù)據(jù)分析和可視化,同時也方便進(jìn)行數(shù)據(jù)備份和管理。
綜上所述,QQ音樂網(wǎng)站排行榜數(shù)據(jù)采集與分析的采集目標(biāo)功能分析旨在
實現(xiàn)對排行榜數(shù)據(jù)的自動化獲取、定時更新、數(shù)據(jù)清洗和預(yù)處理,建立異常處
理機制,并將處理后的數(shù)據(jù)進(jìn)行存儲和管理,為后續(xù)的數(shù)據(jù)分析和可視化提供
可靠的數(shù)據(jù)基礎(chǔ)。
2.3關(guān)鍵技術(shù)分析
2.3.1網(wǎng)絡(luò)爬蟲技術(shù)
QQ音樂網(wǎng)站排行榜數(shù)據(jù)采集與分析的網(wǎng)絡(luò)爬蟲技術(shù)主要涉及到使用自動
化工具模擬瀏覽器行為,從網(wǎng)頁中提取所需的數(shù)據(jù)。其中,常用的網(wǎng)絡(luò)爬蟲技
術(shù)包括以下幾個方面:
Selenium:Selenium是一個用于自動化測試的工具,但也可以用于網(wǎng)絡(luò)
爬蟲。它可以模擬瀏覽器行為,如打開網(wǎng)頁、點擊按鈕、填寫表單等,實現(xiàn)對
動態(tài)網(wǎng)頁的爬取。通過Selenium,可以實現(xiàn)對QQ音樂網(wǎng)站排行榜頁面的自動
化訪問和數(shù)據(jù)提取。
BeautifulSoup:BeautifulSoup是一個用于解析HTML和XML文檔
的Python庫,可以方便地從網(wǎng)頁中提取數(shù)據(jù)。結(jié)合Selenium使用時,可以
利用BeautifulSoup解析網(wǎng)頁源代碼,提取出所需的數(shù)據(jù)信息。
Requests:Requests是一個簡單易用的HTTP庫,用于發(fā)送HTTP請求
和處理響應(yīng)。雖然不能執(zhí)行JavaScript,但對于靜態(tài)網(wǎng)頁的爬取效率較高。
結(jié)合正則表達(dá)式等方法,也可以用于從網(wǎng)頁中提取數(shù)據(jù)。
在實際應(yīng)用中,常常會結(jié)合使用以上多種技術(shù),根據(jù)網(wǎng)站的特點和數(shù)據(jù)的
復(fù)雜程度選擇合適的方法進(jìn)行爬取。同時,還需要注意網(wǎng)站的反爬措施,如設(shè)
置請求頻率限制、驗證碼驗證等,需要相應(yīng)地進(jìn)行處理以確保爬蟲的正常運行。
4
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
2.3.2文件存取技術(shù)
QQ音樂網(wǎng)站排行榜數(shù)據(jù)采集與分析的文件存取技術(shù)主要涉及到將爬取到的
數(shù)據(jù)存儲到文件中,并在后續(xù)的數(shù)據(jù)處理和分析過程中進(jìn)行讀取和操作。常用
的文件存取技術(shù)包括以下幾個方面:
CSV文件存?。篊SV(Comma-SeparatedValues)是一種常見的文本文件
格式,數(shù)據(jù)以逗號分隔,每行表示一條記錄,可以用于存儲表格化數(shù)據(jù)。
Python中的Pandas庫提供了豐富的CSV文件讀寫功能,可以方便地將數(shù)據(jù)
存儲到CSV文件中,并在需要時讀取數(shù)據(jù)進(jìn)行處理和分析。
Excel文件存?。篍xcel是一種常見的電子表格文件格式,可以存儲大
量的數(shù)據(jù),并提供了豐富的數(shù)據(jù)處理和分析功能。Python中的Pandas庫也
支持Excel文件的讀寫操作,可以將數(shù)據(jù)存儲到Excel文件中,或者從
Excel文件中讀取數(shù)據(jù)進(jìn)行處理。
JSON文件存?。篔SON(JavaScriptObjectNotation)是一種輕量級的
數(shù)據(jù)交換格式,易于閱讀和編寫。Python中的json模塊提供了JSON格式
的數(shù)據(jù)讀寫功能,可以將數(shù)據(jù)以JSON格式存儲到文件中,并在需要時讀取數(shù)
據(jù)進(jìn)行處理。
2.3.3可視化技術(shù)
QQ音樂網(wǎng)站排行榜數(shù)據(jù)采集與分析的數(shù)據(jù)可視化技術(shù)主要涉及到利用圖
表、圖形等可視化手段展示數(shù)據(jù)分析結(jié)果,幫助用戶更直觀地理解和分析數(shù)據(jù)。
常用的數(shù)據(jù)可視化技術(shù)包括以下幾個方面:
Pyecharts:Pyecharts是一個基于Echarts實現(xiàn)的Python可視化庫,
提供了豐富的圖表類型和樣式,包括折線圖、柱狀圖、餅圖、散點圖等,可以
滿足各種數(shù)據(jù)展示需求。通過Pyecharts,可以將數(shù)據(jù)轉(zhuǎn)化為可視化圖表,并
提供交互式的圖表功能,如數(shù)據(jù)篩選、數(shù)據(jù)標(biāo)注等,幫助用戶更深入地理解數(shù)
據(jù)。
Matplotlib:Matplotlib是Python中最常用的數(shù)據(jù)可視化庫之一,提
供了豐富的繪圖功能,可以繪制各種靜態(tài)圖表,如折線圖、散點圖、直方圖等。
Matplotlib可以實現(xiàn)對數(shù)據(jù)的簡單可視化,并支持自定義圖表樣式和參數(shù),
滿足個性化的數(shù)據(jù)展示需求。
5
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
3數(shù)據(jù)采集
3.1采集頁面分析
數(shù)據(jù)采集的網(wǎng)站是QQ音樂官網(wǎng)音樂排行榜,在官網(wǎng)中排行榜分為幾個大
類巔峰榜、地區(qū)榜、全球榜等,這些大類排行榜中又包含了若干個小的排行榜,
本項目需要采集的數(shù)據(jù)就是小排行榜中所有的歌曲信息,其中歌曲信息中包含
了歌曲名次、上升速度、歌曲名稱、歌手以及歌曲時長等字段。QQ音樂排行
榜頁面如下圖3-1所示。
圖3-1QQ音樂排行榜
在QQ音樂官網(wǎng)中每個小類排行榜中只包含了前20首歌曲,排行榜靠后的
歌曲需要下載客戶端之后才能展示,如下圖3-2所示。
圖3-2下載客戶端頁面
下載客戶端之后發(fā)現(xiàn)接口的請求方式不是https,數(shù)據(jù)采集的難度非常大,
所以本次數(shù)據(jù)采集只考慮官網(wǎng)頁面中的前20首歌曲。頁面中所展示的歌曲數(shù)
據(jù)量有600百多首,已經(jīng)達(dá)到了數(shù)據(jù)分析的要求。
6
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
3.2網(wǎng)頁結(jié)構(gòu)分析
使用chrome自帶的網(wǎng)頁結(jié)構(gòu)分析工具進(jìn)行分析,查看網(wǎng)站的html結(jié)構(gòu)可
以發(fā)現(xiàn)排行榜大類都保存在//*[@id="app"]/div/div[2]/div[1]//dl標(biāo)簽中,
如下圖3-3所示。
圖3-3排行榜大類html標(biāo)簽
點擊dl標(biāo)簽,可以看到小類排行榜名稱就包含在其中,在代碼中可以通
過python的etree庫使用xpath遍歷所有的大類和小類排行榜名稱。小類排
行榜標(biāo)簽如下圖3-4所示。
圖3-4排行榜小類html標(biāo)簽
使用selenium中的點擊方法,循環(huán)點擊各個小類排行榜即可跳轉(zhuǎn)到對應(yīng)
的頁面,其頁面中即可展示前20首歌曲,后續(xù)xpath獲取到歌曲的各個字段
之后使用python文件操作方法將數(shù)據(jù)保存到文件中。
3.3代碼實現(xiàn)
數(shù)據(jù)采集使用瀏覽器自動化框架selenium來完成,這個框架可以繞過接
口加密等反爬策略,從而更容易的獲取到網(wǎng)頁中的數(shù)據(jù)。編寫get_driver方
法獲取driver對象,代碼如下圖3-5所示。
圖3-5get_driver方法
get_driver()的作用是返回一個已經(jīng)打開了Chrome瀏覽器,并且訪問
了指定網(wǎng)址的WebDriver實例。driver=webdriver.Chrome():這一行創(chuàng)建
7
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
了一個ChromeWebDriver實例,并將其賦值給變量driver。WebDriver是
Selenium的一部分,它可以控制瀏覽器進(jìn)行各種操作。webdriver.Chrome()
創(chuàng)建了一個Chrome瀏覽器的WebDriver實例。括號中的字符串是Chrome
WebDriver的路徑。
driver.get()讓W(xué)ebDriver打開指定的網(wǎng)址WebDriver將自動加載該網(wǎng)
址,并等待頁面完全加載完成。time.sleep(2):這一行代碼讓程序暫停執(zhí)行
2秒。time.sleep()函數(shù)是Python的內(nèi)置函數(shù),用于暫停程序的執(zhí)行一段
時間。在這里,它的作用是等待頁面加載完成。盡管Selenium提供了等待頁
面加載的功能,使用time.sleep()是一種簡單的等待方式。
returndriver:這一行代碼將WebDriver實例返回給調(diào)用者。函數(shù)執(zhí)行
完成后,它將返回一個已經(jīng)打開了指定網(wǎng)址的ChromeWebDriver實例。
定義get_rank的函數(shù),以WebDriver實例作為參數(shù)。這個函數(shù)的主要目
的是從網(wǎng)頁中獲取排行榜信息。如下圖3-6所示。
圖3-6get_rank方法
在函數(shù)內(nèi)部,首先查找頁面上的所有排行榜類別(dl元素);對于每一個
排行榜類別,它獲取類別的名稱(dt元素的文本內(nèi)容);對于每一個排行榜類
別,它獲取類別下的子類別列表(dd元素);對于每一個子類別,它獲取子類
別的名稱(a元素的文本內(nèi)容);如果子類別的名稱中包含"MV",則跳過該子
類別。否則,它模擬點擊子類別的鏈接,打開該子類別下的頁面。等待頁面加
載完成后,獲取當(dāng)前頁面中的歌曲列表。
然后調(diào)用另一個函數(shù)get_song_info,并傳遞當(dāng)前類別的名稱、子類別的
名稱以及當(dāng)前頁面中的歌曲列表作為參數(shù)。
8
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
get_song_info函數(shù)如下圖3-7所示。
圖3-7get_song_info方法
get_song_info的作用是從給定的歌曲列表中提取歌曲信息,并使用f-
字符串將上面提取的歌曲信息組合成一個字符串將其打印出來,并調(diào)用另一個
函數(shù)save_song_info來保存歌曲信息。save_song_info函數(shù)如下圖3-8所
示。
圖3-8save_song_info方法
3.4運行爬蟲程序
編寫main方法,將所有的解析數(shù)據(jù)方法組合起來,啟動程序。Main方法
如下圖3-10所示。
圖3-10main方法
Main方法的作用,如果當(dāng)前模塊被直接執(zhí)行(而不是被導(dǎo)入到其他模塊
中),則執(zhí)行以下代碼塊。調(diào)用get_driver()函數(shù)獲取一個WebDriver實例。
調(diào)用get_rank(driver)函數(shù)來獲取排行榜信息,傳遞了上一步獲取的
WebDriver實例作為參數(shù)。使用driver.close()關(guān)閉WebDriver,釋放資源。
爬蟲運行完畢之后,會在當(dāng)前目錄下生成qqRank.txt結(jié)果文件,該文件
中的內(nèi)容就是爬取下來的數(shù)據(jù)。如下圖3-11所示。
9
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
圖3-11qqRank.txt文件
3.5完整代碼
#coding=gbk
fromseleniumimportwebdriver
importtime
defsave_song_info(result:str):
withopen("./qqRank.txt","a",encoding="utf-8")asf:
f.write(result+"\n")
defget_driver():
driver=
webdriver.Chrome(r'D:\document\otherDoc\chromedownload\chromedriver.exe')
driver.get("/n/ryqq/toplist/62")
time.sleep(2)
returndriver
defget_rank(driver):
rank_cates=
driver.find_elements_by_xpath('//*[@id="app"]/div/div[2]/div[1]//dl')
forfieldinrank_cates:
rank_major_cate_name=field.find_element_by_xpath('./dt').text
print(rank_major_cate_name)
rank_sub_cate_list=field.find_elements_by_xpath('./dd')
forrank_sub_cateinrank_sub_cate_list:
10
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
rank_sub_cate_lag=rank_sub_cate.find_element_by_xpath('./a')
rank_sub_cate_name=rank_sub_cate_lag.text
if("MV"inrank_sub_cate_lag.text):
continue
rank_sub_cate_lag.click()
time.sleep(1)
song_li_list=
driver.find_elements_by_xpath('//*[@id="app"]/div/div[2]/div[2]/div[3]/ul[2]/l
i')
get_song_info(rank_major_cate_name,rank_sub_cate_name,
song_li_list)
defget_song_info(rank_major_cate_name,rank_sub_cate_name,song_li_list):
forsong_liinsong_li_list:
rank=song_li.find_element_by_xpath('./div/div[1]').text
rise_speed=song_li.find_element_by_xpath('./div/div[2]').text
song_name=
song_li.find_element_by_xpath('./div/div[3]/span/a[2]').text
singer=song_li.find_element_by_xpath('./div/div[4]/a').text
song_duration=song_li.find_element_by_xpath('./div/div[5]').text
result=
f"{rank_major_cate_name},{rank_sub_cate_name},{rank},{rise_speed},{song_name},
{singer},{song_duration}"
print(result)
save_song_info(result)
if__name__=='__main__':
driver=get_driver()
get_rank(driver)
driver.close()
11
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
4數(shù)據(jù)清洗與處理
清洗數(shù)據(jù)可以幫助提高數(shù)據(jù)的質(zhì)量和準(zhǔn)確性。通過識別和糾正數(shù)據(jù)中的錯
誤、缺失或不一致的部分,可以使數(shù)據(jù)更加可信賴,從而提高數(shù)據(jù)分析和決策
的準(zhǔn)確性。清洗數(shù)據(jù)也可以增強數(shù)據(jù)可視化的效果。清洗后的數(shù)據(jù)更加干凈和
一致,可以更容易地進(jìn)行可視化展示,并且提高可視化效果的質(zhì)量和吸引力。
4.1數(shù)據(jù)清洗
在進(jìn)行QQ音樂網(wǎng)站排行榜數(shù)據(jù)采集與分析時,數(shù)據(jù)清洗是非常重要的一
步,可以通過Python來完成。首先,我們可以使用Selenium等工具來自動化
地抓取網(wǎng)頁上的排行榜數(shù)據(jù),包括歌曲名稱、歌手、排名等信息。采集到的數(shù)
據(jù)往往會存在一些問題,例如缺失值、重復(fù)值、格式不一致等,因此需要進(jìn)行
清洗以提高數(shù)據(jù)質(zhì)量。
通過觀察爬取下來的數(shù)據(jù)發(fā)現(xiàn)其中存在排名為空的歌曲,這一類記錄無法
參加后續(xù)的排行榜數(shù)據(jù)分析,所以要將其剔除。如下圖4-1所示。
圖4-1存在字段為空的記錄
4.2編程實現(xiàn)
使用python讀取結(jié)果文件,使用python自帶的方法判斷記錄是否需要剔除,
方法clean_data如下圖4-2所示。
圖4-2clean_data方法
12
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
clean_data函數(shù)的作用是讀取指定文件的內(nèi)容,并剔除某個字段為空的記錄,
然后返回清洗后的數(shù)據(jù)。在這個函數(shù)中使用open()函數(shù)打開指定路徑的文件,
使用utf8編碼方式進(jìn)行讀取,確保正確處理文件中可能包含的中文字符。使
用for循環(huán)逐行讀取文件內(nèi)容。對每一行使用strip()方法去除首尾空白字
符,然后使用split(',')方法將其分割成字段列表。使用all(fields)判
斷字段列表中的所有元素是否都為真值(即不為空),如果是,則將該行添加
到cleaned_lines列表中。最后返回cleaned_lines列表,即清洗后的數(shù)據(jù)。
這個函數(shù)實現(xiàn)了基本的文件讀取和數(shù)據(jù)清洗功能,可以用于處理包含以逗
號分隔的字段的文件。將清洗之后的結(jié)果數(shù)據(jù)寫入到qqRank_dataClean.txt
文件中,代碼如下圖4-3所示。
圖4-3清洗結(jié)果寫入文件中
這段代碼指定了輸入文件路徑為./qqRank.txt,輸出文件路徑
為./qqRank_dataClean.txt,然后調(diào)用了clean_data()函數(shù)來對輸入文件
進(jìn)行數(shù)據(jù)清洗,最后將清洗后的數(shù)據(jù)寫回輸出文件。在這個代碼段中:
file_path和file_path_out分別是輸入文件和輸出文件的路徑。調(diào)用了
clean_data()函數(shù),傳入輸入文件的路徑作為參數(shù),得到清洗后的數(shù)據(jù)。
使用open()函數(shù)以寫入模式打開輸出文件,并指定編碼方式為utf8。
使用file.writelines(cleaned_lines)將清洗后的數(shù)據(jù)寫入輸出文件。
整個過程完成了數(shù)據(jù)清洗和輸出,最終得到了清洗后的數(shù)據(jù)文件
qqRank_dataClean.txt。
13
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
4.3運行代碼
運行數(shù)據(jù)清洗代碼之后,會在當(dāng)前目錄生成一個結(jié)果文件,該文件中包含
了清洗操作之后的數(shù)據(jù),該數(shù)據(jù)后續(xù)可以直接作為數(shù)據(jù)分析的原始數(shù)據(jù),
qqRank_dataClean.txt文件內(nèi)容如下圖4-4所示。
圖4-4數(shù)據(jù)清洗結(jié)果
在進(jìn)行QQ音樂網(wǎng)站排行榜數(shù)據(jù)采集與分析后的數(shù)據(jù)清洗之后,我們可以
進(jìn)行數(shù)據(jù)分析,以探索數(shù)據(jù)背后的趨勢、模式和洞見。例如計算各個排行榜類
別中歌曲數(shù)量的分布情況,查看最受歡迎的音樂類別和歌手;分析歌曲的播放
量、點贊量等指標(biāo),了解用戶對不同歌曲的喜好程度和熱度。
4.4完整代碼
#讀取文件內(nèi)容,并剔除某個字段為空的記錄
defclean_data(file_path):
cleaned_lines=[]
withopen(file_path,'r',encoding='utf8')asfile:
forlineinfile:
fields=line.strip().split(',')
ifall(fields):
cleaned_lines.append(line)
returncleaned_lines
#指定文件路徑
file_path='./qqRank.txt'
file_path_out='./qqRank_dataClean.txt'
#調(diào)用函數(shù)進(jìn)行數(shù)據(jù)清洗
cleaned_lines=clean_data(file_path)
#將清洗后的數(shù)據(jù)寫回文件
14
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
withopen(file_path_out,'w',encoding='utf8')asfile:
file.writelines(cleaned_lines)
5數(shù)據(jù)統(tǒng)計與分析
5.1數(shù)據(jù)準(zhǔn)備
在QQ音樂網(wǎng)站排行榜數(shù)據(jù)采集與分析項目中,使用pandas作為數(shù)據(jù)分析
工具。主要從以下登榜的歌曲和歌手,以及歌曲熱度上升速度的角度進(jìn)行分析。
從而全面地了解QQ音樂網(wǎng)站排行榜的情況,包括熱門歌曲、熱門歌手、歌曲
熱度趨勢和排行榜規(guī)模等方面的信息。這些分析結(jié)果可以為音樂推薦、用戶畫
像構(gòu)建、市場營銷等提供有益的參考和支持,幫助我們更好地理解用戶需求和
市場動態(tài),從而制定更加有效的業(yè)務(wù)策略和決策。
方法top_10_songs統(tǒng)計登入排行榜前十的歌曲,top_10_songs方法如下
圖5-1所示。
圖5-1top_10_songs方法
top_10_songs通過value_counts()方法統(tǒng)計了每首歌曲出現(xiàn)的次數(shù),
并使用head(10)方法取了數(shù)量前10的歌曲名稱。然后使用to_csv()方法
將結(jié)果保存到名為top_10_songs.txt的文件中,字段之間用制表符分隔。這
段代碼的主要功能是將歌曲名稱出現(xiàn)次數(shù)排名前十的數(shù)據(jù)保存到txt文件中,
方便后續(xù)分析和查看。
方法artist_counts統(tǒng)計登入排行榜前十的歌曲,artist_counts方法如下
圖5-2所示。
圖5-2artist_counts方法
函數(shù)artist_counts通過value_counts()方法統(tǒng)計了每位歌手在排行榜
中出現(xiàn)的次數(shù),并使用head(10)方法獲取排名前十的歌手。然后使用
to_csv()方法將結(jié)果保存到名為artist_counts.txt的文件中,字段之間用
15
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
制表符分隔。這段代碼的主要功能是統(tǒng)計排行榜中出現(xiàn)次數(shù)排名前十的歌手,
并將結(jié)果保存到txt文件中。
方法top_10_hot_songs統(tǒng)計登入排行榜前十的歌曲,top_10_hot_songs
方法如下圖5-3所示。
圖5-3top_10_hot_songs方法
函數(shù)top_10_hot_songs對數(shù)據(jù)進(jìn)行了一些處理,首先將熱度字段中的百
分號去除,并將其轉(zhuǎn)換為浮點數(shù)格式。然后按照熱度字段對數(shù)據(jù)進(jìn)行降序排列,
并取出排名前十的數(shù)據(jù)。接著從中選取了歌曲名稱和熱度這兩個字段,并使用
to_csv()方法將結(jié)果保存到名為top_10_hot_songs.txt的文件中,字段之
間用制表符分隔。
方法top_10_hot_songs統(tǒng)計登入排行榜前十的歌曲,top_10_hot_songs
方法如下圖5-4所示。
圖5-4song_counts_by_category方法
函數(shù)song_counts_by_category使用groupby()方法按照小類排行榜對
數(shù)據(jù)進(jìn)行分組,并對每個小類排行榜下的歌曲名稱進(jìn)行計數(shù)。然后使用
to_csv()方法將結(jié)果保存到名為song_counts_by_category.txt的文件中,
字段之間用制表符分隔。這段代碼的主要功能是統(tǒng)計各個小類排行榜中的歌曲
數(shù)量,并將結(jié)果保存到txt文件中。
5.2數(shù)據(jù)展示
5.2.1統(tǒng)計登入排行榜前十的歌曲
讀取top_10_songs.txt文件,使用pyecharts繪制柱狀圖,顯示了登入
前十首歌曲的出現(xiàn)次數(shù)。在柱狀圖中,橫坐標(biāo)為歌曲名稱,縱坐標(biāo)為出現(xiàn)次數(shù)。
柱狀圖如下圖5-5所示。
16
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
圖5-5登入排行榜前十的歌曲
從柱狀圖中可以看出在QQ音樂排行榜中出現(xiàn)次數(shù)最多的前十首歌曲。這
個數(shù)據(jù)反映了這些歌曲在一段時間內(nèi)受到了用戶的相對較多關(guān)注和喜愛。
值得注意的是前兩首歌曲《不如見一面》和《身騎白馬》都出現(xiàn)了4次,
說明它們在排行榜上的表現(xiàn)相當(dāng)穩(wěn)定,并且持續(xù)受到了用戶的關(guān)注和喜愛。這
可能是因為這些歌曲的歌詞、旋律或演唱者等方面具有特別吸引人的特點,讓
用戶愿意反復(fù)收聽。
接下來的幾首歌曲《小美滿》、《藏星》、《無名的人》、《枕著光的她》和
《一切都來得及》都出現(xiàn)了3次,表明它們也受到了用戶的一定關(guān)注。這些
歌曲可能在某些方面具有獨特的魅力,吸引了用戶的注意。
最后,排行榜上的其他歌曲出現(xiàn)次數(shù)為2次,雖然相對于前面提到的歌
曲少了一些,但仍然顯示出一定的受歡迎程度。
這些數(shù)據(jù)說明了這些歌曲在一段時間內(nèi)受到了較多用戶的關(guān)注和喜愛,反
映了它們在音樂市場上的一定影響力和流行程度。這對于歌手、音樂制作人和
音樂平臺來說,都是有價值的參考,可以幫助他們更好地了解用戶的喜好和趨
勢,從而進(jìn)行更精準(zhǔn)的音樂推廣和市場營銷。
17
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
5.2.2統(tǒng)計每位歌手登入排行榜的次數(shù)
讀取artist_counts.txt文件,使用pyecharts繪制柱狀圖,統(tǒng)計每位歌
手登入排行榜的次數(shù)。在柱狀圖中,橫坐標(biāo)為歌手名字,縱坐標(biāo)為出現(xiàn)次數(shù)。
柱狀圖如下圖5-6所示。
圖5-6每位歌手登入排行榜的次數(shù)
柱狀圖中可以看出這是登入排行榜次數(shù)最多的前十名歌手。這個數(shù)據(jù)反映
了這些歌手在一段時間內(nèi)在排行榜上的表現(xiàn)相對較好,受到了較多用戶的關(guān)注
和喜愛。
首先,汪蘇瀧以8次的次數(shù)排名第一,說明他在這段時間內(nèi)的表現(xiàn)最為
突出,可能是因為他的歌曲質(zhì)量、風(fēng)格或者其他因素吸引了大量的用戶,持續(xù)
受到關(guān)注。
其次,接下來的幾位歌手G.E.M.鄧紫棋、周杰倫、周深、任素汐都登入
排行榜的次數(shù)為6次,排名并列第二,表明他們在排行榜上的表現(xiàn)也相當(dāng)穩(wěn)
定,受到了較多用戶的關(guān)注和喜愛。毛不易、海來阿木、張杰、en、張藝興等
歌手雖然次數(shù)略低,但仍然表現(xiàn)出一定的受歡迎程度,他們的音樂作品可能在
某些方面具有特殊魅力,吸引了用戶的關(guān)注。
綜上所述,這些數(shù)據(jù)反映了這些歌手在一段時間內(nèi)在音樂市場上的較好表
現(xiàn),受到了較多用戶的關(guān)注和喜愛。這對于歌手自身、音樂制作人和音樂平臺
來說,都是有價值的參考,可以幫助他們更好地了解用戶的喜好和趨勢,從而
進(jìn)行更精準(zhǔn)的音樂推廣和市場營銷。
18
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
5.2.3統(tǒng)計熱度上升最快的前十首歌
讀取top_10_hot_songs.txt文件,使用pyecharts繪制柱狀圖,統(tǒng)計熱
度上升最快的前十首歌。在柱狀圖中,橫坐標(biāo)為歌曲名稱,縱坐標(biāo)為熱度。柱
狀圖如下圖5-7所示。
圖5-7熱度上升最快的前十首歌
柱狀圖可以看出這是排名前十的歌曲上升速度。這個數(shù)據(jù)反映了這些歌曲
在一段時間內(nèi)的上升勢頭,即它們在排行榜中的排名迅速上升的速度。
首先,可以觀察到上升速度最高的歌曲是《克卜勒》,其上升速度達(dá)到了
143.0,這意味著這首歌曲的排名迅速上升,受到了大量用戶的喜愛和關(guān)注,
可能因為歌曲的質(zhì)量、內(nèi)容或者其他因素吸引了用戶。
其次,排名前十的其他歌曲的上升速度也都在67.0到121.0之間,表
明它們在排行榜中的表現(xiàn)也都較為突出,受到了一定程度的關(guān)注和喜愛。
綜上所述,這些數(shù)據(jù)反映了這些歌曲在一段時間內(nèi)的上升勢頭,顯示了它
們在音樂市場上的受歡迎程度和流行趨勢。對于歌手、音樂制作人和音樂平臺
來說,這是一個有價值的參考,可以幫助他們更好地了解用戶的喜好和趨勢,
從而進(jìn)行更精準(zhǔn)的音樂推廣和市場營銷。
5.2.4統(tǒng)計各排行榜中歌曲的數(shù)量
讀取song_counts_by_category.txt文件,使用pyecharts繪制餅圖,統(tǒng)
計各排行榜中歌曲的數(shù)量。餅圖如下圖5-8所示。
19
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
圖5-8各排行榜中的歌曲的數(shù)量
這是每個排行榜中經(jīng)過數(shù)據(jù)清洗后的歌曲數(shù)量。這個數(shù)據(jù)反映了不同排行
榜中歌曲數(shù)量的分布情況,以及各個排行榜的活躍程度和受歡迎程度。
首先,我們可以觀察到歌曲數(shù)量最多的排行榜是"流行指數(shù)榜"和"飆升榜",
分別有20首歌曲。這可能意味著這兩個排行榜中的歌曲種類豐富,受到了較
多用戶的關(guān)注和喜愛。
"K歌金曲榜"、"影視金曲榜"、"抖快榜"、"國風(fēng)熱歌榜"、"動漫音樂榜"、
"臺灣地區(qū)榜"、"聽歌識曲榜"和"說唱榜"等排行榜中的歌曲數(shù)量也都在10到
16首之間,顯示出一定的活躍度和受歡迎程度。
最后,"騰訊音樂人原創(chuàng)榜"的歌曲數(shù)量最少,只有5首歌曲。這可能是
因為這個排行榜比較專注于原創(chuàng)音樂,參與人數(shù)相對較少,所以歌曲數(shù)量較少。
綜上所述,這些數(shù)據(jù)反映了不同排行榜中歌曲數(shù)量的分布情況,顯示了各
個排行榜的活躍程度和受歡迎程度。對于音樂平臺和用戶來說,這是一個有價
值的參考,可以幫助他們更好地了解不同類型的音樂排行榜,選擇自己感興趣
的音樂進(jìn)行欣賞和分享。
5.3綜述
綜合分析上述四組數(shù)據(jù),我們可以得到對QQ音樂排行榜的全面了解。首
先,通過排名前十的歌曲出現(xiàn)次數(shù)統(tǒng)計,我們可以看到用戶對于一些歌曲的喜
愛程度。例如,排名前兩位的歌曲《不如見一面
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)人力資源管理師變革管理測試考核試卷含答案
- 山石工沖突解決評優(yōu)考核試卷含答案
- 鋼琴共鳴盤制作工崗前技能評估考核試卷含答案
- 2024年都昌縣幼兒園教師招教考試備考題庫附答案
- 2024年邵陽通航職業(yè)技術(shù)學(xué)院輔導(dǎo)員招聘考試真題匯編附答案
- 2024年鄂州市遴選公務(wù)員筆試真題匯編附答案
- 2025安徽淮北市總工會社會化工會工作者招聘9人備考題庫附答案
- 2025年云南省公務(wù)員考試行測常識判斷題及1套完整答案
- 2025年企業(yè)市場調(diào)研流程手冊
- 2025年石油行業(yè)設(shè)備維護(hù)手冊
- 中國鋁礦行業(yè)現(xiàn)狀分析報告
- 物業(yè)人員消防安全培訓(xùn)課件
- 服裝銷售年底總結(jié)
- 2025年大學(xué)大四(預(yù)防醫(yī)學(xué))環(huán)境衛(wèi)生學(xué)階段測試試題及答案
- 文物安全保護(hù)責(zé)任書范本
- 產(chǎn)房護(hù)士長年度工作業(yè)績總結(jié)與展望
- 【初中 歷史】2025-2026學(xué)年統(tǒng)編版八年級上學(xué)期歷史總復(fù)習(xí) 課件
- 2025~2026學(xué)年黑龍江省哈爾濱市道里區(qū)第七十六中學(xué)校九年級上學(xué)期9月培優(yōu)(四)化學(xué)試卷
- 2025年律師事務(wù)所黨支部書記年終述職報告
- 中國腦小血管病診治指南2025
- 中國零排放貨運走廊創(chuàng)新實踐經(jīng)驗、挑戰(zhàn)與建議
評論
0/150
提交評論