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

下載本文檔

版權(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開發(fā)環(huán)境與工具2

1.2.1Python介紹2

1.2.2MySQL介紹3

1.2.3Excel介紹5

1.2.4Jupyternotebook介紹6

2需求分析9

2.1可行性需求分析9

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

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

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

2.3.2文件存取技術(shù)11

2.3.3可視化技術(shù)12

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

3.1采集頁(yè)面分析13

3.2字段分析15

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

4數(shù)據(jù)清洗與處理21

4.1數(shù)據(jù)清洗22

4.2數(shù)據(jù)儲(chǔ)存24

4.3編程實(shí)現(xiàn)26

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

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

5.2數(shù)據(jù)展示30

5.2.1數(shù)據(jù)展示依據(jù)音樂(lè)收聽(tīng)數(shù)量與占比進(jìn)行統(tǒng)計(jì)30

5.2.2依據(jù)音樂(lè)關(guān)鍵詞進(jìn)行統(tǒng)計(jì)32

I

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

5.2.3依據(jù)騰訊音樂(lè)排名變動(dòng)進(jìn)行統(tǒng)計(jì)34

5.3綜述36

6小結(jié)37

參考資料38

II

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

基于Python的QQ音樂(lè)數(shù)據(jù)采集與分析

1引言

大數(shù)據(jù)是一種長(zhǎng)期、大量、多元化且運(yùn)轉(zhuǎn)較快的數(shù)據(jù),它可以帶來(lái)人們?cè)S

多有趣的現(xiàn)象和想法,比如用戶行為、情感分析、企業(yè)運(yùn)營(yíng)等,這些現(xiàn)象和想

法都可以被應(yīng)用到日常生活中。由于大數(shù)據(jù)的高速運(yùn)轉(zhuǎn),人們對(duì)它的捕捉和處

理也變得更加容易。一般軟件無(wú)法將其捕捉和處理,因此需要利用大數(shù)據(jù)技術(shù)

來(lái)分析和處理這些數(shù)據(jù),發(fā)現(xiàn)它們之間的聯(lián)系和規(guī)律。大數(shù)據(jù)還可以用于獲取

事件,并將其運(yùn)用到生活中,這就是大數(shù)據(jù)的作用與魅力。隨著科技的發(fā)展和

社會(huì)的進(jìn)步,大數(shù)據(jù)已經(jīng)進(jìn)入到大家的生活。它體現(xiàn)在日常生活中的方方面面,

被人們所發(fā)現(xiàn)探索,并造福于人們的生活。

1.1項(xiàng)目背景

現(xiàn)在進(jìn)入了快餐時(shí)代,高標(biāo)準(zhǔn)的娛樂(lè)化對(duì)人們來(lái)說(shuō)是一個(gè)硬需求。人們?cè)?/p>

工作與生活中馬不停蹄的奔波,有時(shí)會(huì)感到勞累,這時(shí)就需要尋找另外一種方

式來(lái)放松自己,而音樂(lè)作為一種輕松,便捷的方式,無(wú)疑成為人們的首選。在

大街小巷中,隨處可見(jiàn)人們帶著耳機(jī)收聽(tīng)自己喜歡的音樂(lè),這表明音樂(lè)不僅僅

只是一段抽象的旋律,更是在快節(jié)奏時(shí)代里治愈人們的良藥。音樂(lè)不僅能讓人

們放松身心,而且也能讓大家感受到快樂(lè)和美好。

相對(duì)于音樂(lè)來(lái)說(shuō),它涉及到的東西太多了。它不僅涉及到音樂(lè)的種類,比

如搖滾、抒情、傷感等等,還涉及到音樂(lè)的語(yǔ)種,比如中文、英文、韓語(yǔ)、日

語(yǔ)等等。同時(shí)也涉及到音樂(lè)的收聽(tīng)群眾,比如國(guó)內(nèi)的和國(guó)外的,還有我國(guó)著名

歌手的收聽(tīng)率。本次對(duì)QQ音樂(lè)進(jìn)行數(shù)據(jù)采集清洗與可視化通過(guò)采集QQ音樂(lè)網(wǎng)

站的數(shù)據(jù),分析用戶聽(tīng)歌行為和音樂(lè)排行榜,同時(shí)也為用戶提供更好的音樂(lè)推

薦服務(wù)。接下來(lái)本畢業(yè)設(shè)計(jì)將利用大數(shù)據(jù)及相關(guān)技術(shù),以爬取QQ音樂(lè)網(wǎng)站排行

榜數(shù)據(jù)為例,對(duì)它進(jìn)行詳細(xì)的分析并展示。

1

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

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

1.2.1Python介紹

PyCharm可以為爬取QQ音樂(lè)熱歌榜數(shù)據(jù)服務(wù),可以使用PyCharm中的

Python編程語(yǔ)言和相應(yīng)的庫(kù)來(lái)實(shí)現(xiàn)。首先,安裝所需的庫(kù);你需要安裝requests

和BeautifulSoup庫(kù)來(lái)獲取和解析網(wǎng)頁(yè)數(shù)據(jù)。然后,獲取網(wǎng)頁(yè)數(shù)據(jù);使用requests

庫(kù),你可以發(fā)送GET請(qǐng)求來(lái)獲取熱歌榜的網(wǎng)頁(yè)數(shù)據(jù)爬蟲的代碼和可視化的代碼

都要到PyCharm中編寫。使用PyCharm編寫代碼,完成爬蟲和數(shù)據(jù)可視化工作

都要使用到。

在使用PyCharm時(shí)會(huì)產(chǎn)生一些習(xí)慣上的語(yǔ)法錯(cuò)誤;對(duì)庫(kù)的選擇會(huì)有疑問(wèn),

需要自己上網(wǎng)查找或者詢問(wèn);PyCharm的版本差異;在運(yùn)行代碼之后對(duì)代碼的

調(diào)試存在問(wèn)題。

操作流程如下:首先,安裝PyCharm。再新建項(xiàng)目,在PyCharm中新建一

個(gè)項(xiàng)目,命名為“QQmusic”,選擇Python解釋器版本,然后點(diǎn)擊“Create”。

再導(dǎo)入必要的庫(kù),導(dǎo)入需要使用requests和BeautifulSoup庫(kù)來(lái)爬取網(wǎng)頁(yè)和解析

HTML。打開PyCharm終端,安裝這requests庫(kù)和beautifulsoup4庫(kù)。然后編

寫代碼,在PyCharm中新建一個(gè)Python文件,命名為“QQmusic.py”。

#導(dǎo)入庫(kù)

importrequests

frombs4importBeautifulSoup#發(fā)送請(qǐng)求并獲取HTML

url='https://y.QQ.com/n/yQQ/toplist/4.html'

response=requests.get(url)

html=response.text#解析HTML

soup=BeautifulSoup(html,'html.parser')

songs_list=soup.find_all('li',class_='js_song')#遍歷歌曲列表并輸出歌手和歌曲名字

forsonginsongs_list:

song_name=song.find('span',class_='songname').get_text().strip()

singer_name=song.find('span',class_='singer').get_text().strip()

print(singer_name+'-'+song_name)

之后,運(yùn)行代碼,在PyCharm中運(yùn)行代碼,將會(huì)輸出熱歌榜的歌手名字和

歌曲名字。

2

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

其中的工作原理是:首先,通過(guò)requests庫(kù)向QQ音樂(lè)熱歌榜的URL發(fā)送

請(qǐng)求,獲取網(wǎng)頁(yè)源代碼;再使用正則表達(dá)式或者Beautifulsoup從源代碼中解析

出需要的信息,即歌手名字和歌曲名字;然后將獲取到的數(shù)據(jù)存儲(chǔ)到本地或者

進(jìn)行其他操作。

在使用PyCharm爬取QQ音樂(lè)熱歌榜歌手名字和歌曲名字之后,更加深入的

了解了web爬蟲技術(shù),在學(xué)習(xí)如何使用PyCharm抓取QQ音樂(lè)熱歌榜歌手名字和

歌曲名字之前,必須了解如何使用Python編寫web爬蟲腳本。更深入地了解了

web爬蟲的工作原理,以及如何通過(guò)分析html文檔提取所需的數(shù)據(jù)。也明白了

使用PyCharm進(jìn)行此任務(wù)更有效率,因?yàn)樗峁┝硕喾N實(shí)用工具,例如代碼高

亮顯示、自動(dòng)完成、集成版本控制等等。同時(shí),PyCharm也可以監(jiān)測(cè)到變量的類

型,大大減少了編程錯(cuò)誤的可能性。再然后通過(guò)網(wǎng)絡(luò)抓取數(shù)據(jù)經(jīng)常會(huì)遇到網(wǎng)絡(luò)

相關(guān)問(wèn)題,例如Ip封鎖,頻繁執(zhí)行的請(qǐng)求并發(fā)數(shù)限制等等。在抓取數(shù)據(jù)時(shí)還需

要處理反爬蟲機(jī)制,確保請(qǐng)求過(guò)于頻繁不被禁止爬蟲。盡管這些問(wèn)題都會(huì)影響

程序的運(yùn)行速度和效率,更進(jìn)一步優(yōu)化抓取方式有助于在這方面有更好的表現(xiàn)。

1.2.2MySQL介紹

將利用PyCharm爬取下來(lái)的csv文件導(dǎo)入到MySQL數(shù)據(jù)庫(kù)中。將數(shù)據(jù)儲(chǔ)存

到數(shù)據(jù)庫(kù)中保存,創(chuàng)建新的數(shù)據(jù)表將所需要的數(shù)據(jù)保存好,后續(xù)可視化步驟要

用到數(shù)據(jù)進(jìn)行可視化技術(shù)。

MySQL可以為爬取QQ音樂(lè)熱歌榜數(shù)據(jù)提供MySQL服務(wù),需要完成以下步

驟:首先,創(chuàng)建數(shù)據(jù)庫(kù)和表格;在MySQL中創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)和一個(gè)表格來(lái)存儲(chǔ)

爬取的數(shù)據(jù)。創(chuàng)建一個(gè)名為QQ_music的數(shù)據(jù)庫(kù)和一個(gè)名為hotsongs的表格。

CREATEDATABASEQQ_music;

USEQQ_music;

CREATETABLEhot_songs(

idINT(11)NOTNULLAUTO_INCREMENT,

song_nameVARCHAR(255)NOTNULL,

singer_nameVARCHAR(255)NOTNULL,

album_nameVARCHAR(255)NOTNULL,

rankINT(11)NOTNULL,

PRIMARYKEY(id)

);

3

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

接下來(lái),連接MySQL數(shù)據(jù)庫(kù);需要使用Python連接MySQL數(shù)據(jù)庫(kù)。使用

Python的’MySQL-connector’

使用MySQL爬取QQ音樂(lè)熱歌榜數(shù)據(jù)可能會(huì)面臨以下幾個(gè)困難:首先是數(shù)

據(jù)格式的問(wèn)題;QQ音樂(lè)熱歌榜數(shù)據(jù)可能以不同的格式呈現(xiàn),如JSON、XML等,

需要進(jìn)行解析和轉(zhuǎn)換,才能存儲(chǔ)到MySQL數(shù)據(jù)庫(kù)中。其次是數(shù)據(jù)量的問(wèn)題;QQ

音樂(lè)熱歌榜數(shù)據(jù)量龐大,需要進(jìn)行大量的網(wǎng)絡(luò)請(qǐng)求和數(shù)據(jù)處理,可能會(huì)導(dǎo)致程

序運(yùn)行速度較慢,甚至出現(xiàn)內(nèi)存溢出等問(wèn)題。最后就是爬蟲反爬蟲機(jī)制的問(wèn)題;

例如IP封鎖、驗(yàn)證碼、請(qǐng)求頻率限制等,這些機(jī)制可能會(huì)導(dǎo)致爬蟲程序無(wú)法正

常訪問(wèn)網(wǎng)站或被封禁。

操作流程如下:首先,確定數(shù)據(jù)表結(jié)構(gòu),根據(jù)需要爬取的數(shù)據(jù),設(shè)計(jì)MySQL

數(shù)據(jù)表結(jié)構(gòu)。創(chuàng)建一個(gè)名為“QQ_music_hot_songs”的數(shù)據(jù)表,包含歌曲名稱、

歌手、專輯、播放量等字段。其次,創(chuàng)建Python爬蟲,使用Python編寫爬蟲

程序,通過(guò)QQ音樂(lè)的API或網(wǎng)頁(yè)抓取熱歌榜數(shù)據(jù),并將數(shù)據(jù)存儲(chǔ)到MySQL數(shù)

據(jù)庫(kù)中。可以使用Python的requests、BeautifulSoup和pymysql等庫(kù)實(shí)現(xiàn)。最

后,連接MySQL數(shù)據(jù)庫(kù),在Python程序中使用pymysql庫(kù)連接MySQL數(shù)據(jù)庫(kù),

并創(chuàng)建一個(gè)游標(biāo)對(duì)象,用于執(zhí)行SQL語(yǔ)句。

其中的工作原理是:首先,確定數(shù)據(jù)爬取的來(lái)源和目標(biāo),從QQ音樂(lè)熱歌榜

頁(yè)面獲取數(shù)據(jù),并將數(shù)據(jù)存儲(chǔ)到MySQL數(shù)據(jù)庫(kù)中。其次,確定需要爬取的數(shù)據(jù),

例如歌曲名稱、歌手、專輯、播放鏈接、播放次數(shù)等。然后,使用Python編寫

爬蟲程序,通過(guò)Python的requests庫(kù)和BeautifulSoup庫(kù),向QQ音樂(lè)熱歌榜

頁(yè)面發(fā)送請(qǐng)求并解析頁(yè)面內(nèi)容,獲取需要的數(shù)據(jù)。之后,連接MySQL數(shù)據(jù)庫(kù),

使用Python的pymysql庫(kù)連接MySQL數(shù)據(jù)庫(kù),創(chuàng)建表格用于存儲(chǔ)爬取的數(shù)據(jù)。

最后,將爬取的數(shù)據(jù)存儲(chǔ)。

使用MySQL作為爬取數(shù)據(jù)的存儲(chǔ)介質(zhì)是一個(gè)不錯(cuò)的選擇,因?yàn)镸ySQL是一

個(gè)流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),具有廣泛的應(yīng)用和良好的穩(wěn)定性。其次,在

爬取QQ音樂(lè)熱歌榜數(shù)據(jù)時(shí),需要使用Python爬蟲來(lái)獲取數(shù)據(jù)??梢允褂肞ython

的Requests庫(kù)和BeautifulSoup庫(kù)來(lái)發(fā)送HTTP請(qǐng)求和解析HTML頁(yè)面。然后,

將數(shù)據(jù)存儲(chǔ)到MySQL數(shù)據(jù)庫(kù)中,可以使用Python的MySQLdB庫(kù)或者pymysql庫(kù)

來(lái)連接和操作MySQL數(shù)據(jù)庫(kù)。最后,數(shù)據(jù)庫(kù)能夠很好地存儲(chǔ)和管理數(shù)據(jù),可以

方便地進(jìn)行數(shù)據(jù)的增刪改查,也方便進(jìn)行數(shù)據(jù)的備份和恢復(fù)。MySQL具有很高的

性能和穩(wěn)定性,可以支持大規(guī)模的數(shù)據(jù)存儲(chǔ)和訪問(wèn),保證了數(shù)據(jù)的可靠性和安

全性。

4

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

1.2.3Excel介紹

Excel可以為爬取QQ音樂(lè)熱歌榜數(shù)據(jù)提供以下幾種服務(wù):首先,進(jìn)行數(shù)據(jù)

分析和處理,Excel可以將爬取到的數(shù)據(jù)進(jìn)行分析和處理,例如將數(shù)據(jù)按照歌曲

名稱、歌手、排名等進(jìn)行分類和排序,以便于后續(xù)的數(shù)據(jù)分析和使用。其次,

進(jìn)行數(shù)據(jù)可視化,Excel可以將數(shù)據(jù)可視化,例如使用圖表、圖形等方式展示數(shù)

據(jù),使得數(shù)據(jù)更加直觀和易于理解。然后,進(jìn)行數(shù)據(jù)導(dǎo)出,Excel可以將處理好

的數(shù)據(jù)導(dǎo)出為Excel文件或其他格式,方便后續(xù)的數(shù)據(jù)使用和分享。之后,進(jìn)行

數(shù)據(jù)計(jì)算,Excel可以進(jìn)行簡(jiǎn)單的數(shù)據(jù)計(jì)算,例如對(duì)歌曲排名進(jìn)行求和、平均。

最后,保存爬取下來(lái)的數(shù)據(jù)要使用excel來(lái)保存,利用PyCharm將爬取下來(lái)的

QQ音樂(lè)熱歌榜歌手,名字,排名,利用PyCharm以csv的格式保存。

將QQ音樂(lè)熱歌榜數(shù)據(jù)儲(chǔ)存在excel中可能會(huì)面臨以下困難:首先是數(shù)據(jù)獲

取的問(wèn)題,獲QQ音樂(lè)熱歌榜數(shù)據(jù)需要從QQ音樂(lè)網(wǎng)站上抓取數(shù)據(jù),因此需要獲

取相關(guān)訪問(wèn)權(quán)限和技術(shù)知識(shí),并確保抓取到的數(shù)據(jù)準(zhǔn)確可靠。其次是數(shù)據(jù)清洗

的問(wèn)題,抓取到的數(shù)據(jù)通常需要進(jìn)行清洗,例如去除重復(fù)數(shù)據(jù)或錯(cuò)誤數(shù)據(jù),并

將數(shù)據(jù)轉(zhuǎn)換為適當(dāng)?shù)母袷揭员阍趀xcel中使用。之后是數(shù)據(jù)量的問(wèn)題:QQ音樂(lè)

熱歌榜每天都會(huì)更新,因此將所有數(shù)據(jù)保存到一個(gè)excel文件中可能會(huì)導(dǎo)致文件

過(guò)大,處理速度變慢。然后是數(shù)據(jù)分析的問(wèn)題,在excel中對(duì)大數(shù)據(jù)集進(jìn)行分析

可能會(huì)導(dǎo)致excel變得緩慢或崩潰。因此,需要小心處理數(shù)據(jù),并在必要時(shí)使用

其他工具來(lái)處理和分析數(shù)據(jù)。最后就是數(shù)據(jù)更新的問(wèn)題,由于QQ音樂(lè)熱歌榜每

天都會(huì)更新,因此需要定期更新excel文件中的數(shù)據(jù),這可能需要花費(fèi)一定的時(shí)

間和精力。

操作流程如下:首先確定需要爬取的數(shù)據(jù),在開始爬取QQ音樂(lè)熱歌榜數(shù)據(jù)

之前,要先確定需要什么樣的數(shù)據(jù)。例如,我們可能需要歌曲名稱、歌手名字、

所屬專輯、排名等信息。其次編寫爬蟲程序,使用python或其他編程語(yǔ)言編寫

一個(gè)爬蟲程序,從QQ音樂(lè)熱歌榜網(wǎng)站上獲取數(shù)據(jù),并將其存儲(chǔ)到本地文件中。

之后讀取數(shù)據(jù)文件,在excel中打開剛才存儲(chǔ)數(shù)據(jù)的文件,并確認(rèn)數(shù)據(jù)是否按照

預(yù)期格式組織。創(chuàng)建表格,在excel中創(chuàng)建一個(gè)新的工作表,并為每個(gè)需要存儲(chǔ)

的字段創(chuàng)建一個(gè)列。復(fù)制和粘貼數(shù)據(jù):將剛才從QQ音樂(lè)熱歌榜網(wǎng)站上爬取到的

數(shù)據(jù),復(fù)制并粘貼到新創(chuàng)建的工作表中。格式化單元格:根據(jù)數(shù)據(jù)類型和需求,

格式化每個(gè)單元格。例如,在“排名”列中,應(yīng)該使用數(shù)字格式。添加篩選器:

添加篩選器以方便對(duì)數(shù)據(jù)進(jìn)行排序和過(guò)濾。最后保存文件:將excel文件另存為

一個(gè)新文件,以便以后可以編輯和更新數(shù)據(jù)。

5

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

其中的工作原理是:首先需要爬取QQ音樂(lè)熱歌榜的數(shù)據(jù)??梢酝ㄟ^(guò)python

中的requests庫(kù)和Beautifulsoup庫(kù)進(jìn)行網(wǎng)頁(yè)爬取,獲取歌曲名、歌手、專輯、

排名等信息。其次將獲取到的數(shù)據(jù)存儲(chǔ)為一個(gè)二維數(shù)組或者字典的形式,在

python中使用pandas庫(kù)將其轉(zhuǎn)化為dataFrame格式。然后在excel中打開一個(gè)

新的工作簿,將dataFrame格式的數(shù)據(jù)復(fù)制到工作表中。之后根據(jù)需要對(duì)數(shù)據(jù)

進(jìn)行格式調(diào)整,例如合并單元格、添加篩選器、添加自動(dòng)篩選等操作。最后將excel

文件保存為.csv格式,方便進(jìn)行數(shù)據(jù)分析和處理??傊?,使用excel儲(chǔ)存QQ音

樂(lè)熱歌榜數(shù)據(jù)的工作原理是將獲取到的數(shù)據(jù)經(jīng)過(guò)格式轉(zhuǎn)化后復(fù)制到excel工作

表中,并對(duì)數(shù)據(jù)進(jìn)行格式調(diào)整和處理。這樣可以方便地進(jìn)行數(shù)據(jù)分析和處理。

使用excel儲(chǔ)存QQ音樂(lè)熱歌榜數(shù)據(jù),可以輕松地將數(shù)據(jù)整理成表格形式并

進(jìn)行篩選、排序分析等操作。excel還具有豐富的函數(shù)和圖表功能,能夠有效地

處理大量的數(shù)據(jù),使得數(shù)據(jù)分析更加容易。另外,通過(guò)在excel中存儲(chǔ)數(shù)據(jù),您

可以隨時(shí)打開和編輯數(shù)據(jù),并進(jìn)行實(shí)時(shí)記錄,確保數(shù)據(jù)的準(zhǔn)確性。然而,也需

要注意一些問(wèn)題。首先,當(dāng)數(shù)據(jù)量過(guò)大時(shí),excel可能會(huì)變得非常緩慢或不穩(wěn)定。

其次,excel對(duì)于數(shù)值型數(shù)據(jù)的計(jì)算可能存在精度損失或其他問(wèn)題。此外,在刪

除或修改數(shù)據(jù)時(shí),請(qǐng)務(wù)必小心操作,以免意外刪除或更改錯(cuò)誤的內(nèi)容??偟膩?lái)

說(shuō),使用excel儲(chǔ)存QQ音樂(lè)熱歌榜數(shù)據(jù)是十分實(shí)用和便捷的。只要注意這些細(xì)

節(jié)問(wèn)題并善用excel的各種功能,就可以從中獲得一些比較好的數(shù)據(jù)分析結(jié)果了。

1.2.4Jupyternotebook介紹

使用Jupyternotebook可以為儲(chǔ)存QQ音樂(lè)熱歌榜數(shù)據(jù)提供以下服務(wù):首先,

進(jìn)行數(shù)據(jù)處理和分析,Jupyternotebook是一種交互式的數(shù)據(jù)科學(xué)工具,能夠方

便地對(duì)爬取的數(shù)據(jù)進(jìn)行清洗、整理和處理,并進(jìn)行可視化呈現(xiàn)。其次,進(jìn)行數(shù)

據(jù)抓取,通過(guò)在Jupyternotebook中使用Python爬蟲庫(kù),可以輕松實(shí)現(xiàn)對(duì)QQ

音樂(lè)熱歌榜數(shù)據(jù)的抓取。然后,可以進(jìn)行協(xié)作開發(fā),Jupyternotebook支持多人

協(xié)作編輯,多人之間可以同步查看并編輯代碼和文檔,以實(shí)現(xiàn)更加高效的開發(fā)

過(guò)程。之后,可以進(jìn)行自動(dòng)化部署,使用云服務(wù)將Jupyternotebook部署到云端,

使得數(shù)據(jù)抓取和處理能夠自動(dòng)化運(yùn)行,避免因?yàn)楸镜丨h(huán)境的限制而產(chǎn)生的問(wèn)題。

綜上所述,Jupyternotebook是一個(gè)十分適合用于QQ音樂(lè)熱歌榜數(shù)據(jù)爬取的工

具。數(shù)據(jù)清洗的時(shí)候用到Jppyternotebook技術(shù)。對(duì)數(shù)據(jù)進(jìn)行查重處理,過(guò)濾出

不需要,殘缺,不合理的數(shù)據(jù),盡可能保證數(shù)據(jù)的合理性和真實(shí)性。

6

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

使用Jupyternotebook儲(chǔ)存QQ音樂(lè)熱歌榜數(shù)據(jù)可能會(huì)遇到以下困難:首先

是數(shù)據(jù)獲取難度較大,需要使用爬蟲技術(shù)從QQ音樂(lè)熱歌榜網(wǎng)頁(yè)中抓取數(shù)據(jù)。這

需要對(duì)web開發(fā)技術(shù)和Python爬蟲框架有一定的了解。其次是數(shù)據(jù)解析復(fù)雜,

抓取的網(wǎng)頁(yè)數(shù)據(jù)通常是html格式,需要使用python的解析庫(kù)(如Beautifulsoup)

將其轉(zhuǎn)換成結(jié)構(gòu)化的數(shù)據(jù),才能進(jìn)行數(shù)據(jù)分析。然后需要進(jìn)行數(shù)據(jù)清洗和整理,

從網(wǎng)頁(yè)上抓取下來(lái)的數(shù)據(jù)通常會(huì)包含各種雜質(zhì)和格式不規(guī)范的數(shù)據(jù),需要進(jìn)行

數(shù)據(jù)清洗和整理,以便于后續(xù)的數(shù)據(jù)分析和可視化。之后需要對(duì)文件存儲(chǔ)格式

進(jìn)行選擇,在將數(shù)據(jù)存儲(chǔ)到文件中時(shí),需要選擇合適的文件格式(如csv、Json

等),同時(shí)需要考慮文件大小和讀寫效率等方面的問(wèn)題。對(duì)于較大的數(shù)據(jù)集,

可能需要使用更高效的數(shù)據(jù)庫(kù)技術(shù)進(jìn)行存儲(chǔ)和管理。最后存在版權(quán)問(wèn)題,如果

要將QQ音樂(lè)熱歌榜數(shù)據(jù)用于商業(yè)用途或公開發(fā)布,可能會(huì)存在版權(quán)和法律問(wèn)題,

需要認(rèn)真評(píng)估和處理。

操作流程如下:首先,需要安裝所需的Python包。在JupyterNotebook中

打開一個(gè)新的Notebook并輸入以下命令來(lái)安裝所需的庫(kù):

pipinstallrequests.

pipinstallbeautifulsoup4.

pipinstallpandas

導(dǎo)入所需的庫(kù):

importrequests

frombs4importBeautifulSoup

importpandasaspd

獲取熱歌榜頁(yè)面的鏈接并發(fā)送請(qǐng)求以獲取HTML內(nèi)容:

url='https://y.QQ.com/n/yQQ/toplist/26.html'

response=requests.get(url)

html=response.content

使用BeautifulSoup庫(kù)解析HTML內(nèi)容:

soup=BeautifulSoup(html,'html.parser')

查找歌曲名稱、歌手和專輯,并將其存儲(chǔ)到PandasDataFrame中:

song_list=[]

singer_list=[]

album_list=[]

song_items=soup.find_all('li',class_='js_song')

7

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

forsonginsong_items:

song_attr=song.find('span',class_='songname_txt')

song_name=song_attr.text.strip()

singer_attr=song.find_all('span',class_='singer_name')[0]

singer_name=singer_attr.text.strip()

album_attr=song.find_all('a',class_='album_name')[0]

album_name=album_attr.text.strip()

song_list.append(song_name)

singer_list.append(singer_name)

album_list.append(album_name)

df=pd.DataFrame({'Song':song_list,'Singer':singer_list,'Album':album_list})

將數(shù)據(jù)保存在CSV文件中:

df.to_csv('QQ_music_top_songs.csv',index=False,encoding='UTF-8-sig')

最后,可以在工作目錄中找到一個(gè)名為“QQ_music_top_songs.csv”的文件,

其中包含從QQ音樂(lè)熱歌榜抓取的歌曲數(shù)據(jù)。

其中的工作原理是:首先,需要安裝相關(guān)依賴包和配置環(huán)境,如requests、

pandas等。其次,使用requests庫(kù)向QQ音樂(lè)熱歌榜API發(fā)送請(qǐng)求獲取數(shù)據(jù),

在本地進(jìn)行處理。然后,將獲取到的數(shù)據(jù)轉(zhuǎn)換為pandas的Dataframe格式,并

對(duì)其中的信息進(jìn)行清洗、預(yù)處理和分析等操作,以符合需要。最后,可以通過(guò)

matplotlib等可視化工具對(duì)結(jié)果進(jìn)行展示和呈現(xiàn),也可以將結(jié)果導(dǎo)出為csv或其

他格式進(jìn)行存儲(chǔ)。

Jupyternotebook是一種交互式的編程環(huán)境,它可以混合包含代碼、文本、

圖像等多種類型的數(shù)據(jù),方便用戶展示和共享分析過(guò)程和結(jié)果。對(duì)于儲(chǔ)存QQ音

樂(lè)熱歌榜數(shù)據(jù)而言,Jupyternotebook具有以下優(yōu)缺點(diǎn):

其優(yōu)點(diǎn):首先,相比傳統(tǒng)的文本編輯器,Jupyternotebook具有更加直觀的

數(shù)據(jù)可視化效果,可以方便地展示數(shù)據(jù)集和相關(guān)的統(tǒng)計(jì)圖表。其次,

Jupyternotebook的交互性較強(qiáng),能夠?qū)崟r(shí)運(yùn)行代碼并查看執(zhí)行的結(jié)果,便于用

戶進(jìn)行數(shù)據(jù)篩選、清洗、整理等操作。之后,Jupyternotebook支持markdown

語(yǔ)法,使得用戶可以在筆記內(nèi)添加關(guān)于數(shù)據(jù)處理的注釋,**圖像或超鏈接等元素,

提高了筆記的可讀性和易用性;最后,Jupyternotebook是跨平臺(tái)的,可以在

windows,macos,linux上運(yùn)行,兼容python等多種編程語(yǔ)言。

8

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

其缺點(diǎn):首先,Jupyternotebook集成了很多功能,會(huì)占據(jù)一定的系統(tǒng)資源,

可能導(dǎo)致運(yùn)行速度變慢。其次,對(duì)于大型數(shù)據(jù)集,Jupyternotebook存在性能瓶

頸,無(wú)法快速加載和運(yùn)算數(shù)據(jù)。然后,Jupyternotebook使用notebook文件格

式來(lái)保存,這種格式不能很好地適應(yīng)版本控制等情況;之后,Jupyternotebook

缺乏代碼的標(biāo)準(zhǔn)性,用戶可能編寫出不按照python規(guī)范的代碼,而且易出現(xiàn)語(yǔ)

法錯(cuò)誤等問(wèn)題。

最后綜上所述,Jupyternotebook在儲(chǔ)存QQ音樂(lè)熱歌榜數(shù)據(jù)方面具有較為

明顯的優(yōu)點(diǎn)。但是如果要處理大型數(shù)據(jù)集,或者需要對(duì)代碼進(jìn)行版本控制,還

是有一定局限性的。

2需求分析

2.1可行性需求分析

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

首先,python作為一種腳本語(yǔ)言,具有良好的編程靈活性和通用性,在數(shù)

據(jù)采集、清洗、處理和可視化等方面都有非常廣泛且強(qiáng)大的支持包和庫(kù),比如

requests、beautifulsoup4、pandas、matplotlib等,可以為我們提供較高效和較

準(zhǔn)確地完成這些任務(wù)的工具和環(huán)境。其次,QQ音樂(lè)網(wǎng)站是中國(guó)最流行的在線音

樂(lè)播放平臺(tái)之一,擁有龐大的音樂(lè)資源和用戶群體,在QQ音樂(lè)網(wǎng)站上進(jìn)行數(shù)據(jù)

采集,可以獲取到音樂(lè)資源的標(biāo)題、歌手、專輯、時(shí)長(zhǎng)、排名、評(píng)分等信息,

也可以獲取到用戶評(píng)論、點(diǎn)贊數(shù)等相關(guān)數(shù)據(jù)。這些信息能夠幫助我們進(jìn)行多角

度的數(shù)據(jù)分析和挖掘,例如:熱門歌曲排行、各類音樂(lè)類型走向、熱門歌手等。

最后,隨著開源軟件的不斷涌現(xiàn),如Jupyternotebook、PyCharm等對(duì)數(shù)據(jù)科學(xué)

的支持也愈發(fā)強(qiáng)大。這些開源工具提供了交互式和實(shí)驗(yàn)式的學(xué)習(xí)和實(shí)驗(yàn)環(huán)境,

可以幫助我們更高效和有趣地完成從采集到分析到可視化的整個(gè)過(guò)程。因此,

基于python的QQ音樂(lè)網(wǎng)數(shù)據(jù)采集分析與可視化技術(shù)方案是可行的,可以通過(guò)

python編寫相應(yīng)的代碼實(shí)現(xiàn)。數(shù)據(jù)清洗也有例如強(qiáng)大的pandas庫(kù)及numpy庫(kù),

對(duì)數(shù)據(jù)處理會(huì)十分可靠,里面的各種方法基本可以滿足各種需求。如從各大網(wǎng)

站爬取商品折扣信息,比較獲取優(yōu)先選擇,對(duì)社交網(wǎng)絡(luò)上發(fā)言進(jìn)行收集分類,

生成情緒地圖,分析語(yǔ)言習(xí)慣。數(shù)據(jù)可視化有第三方python庫(kù)對(duì)各種圖表進(jìn)行

封裝,只需要傳入數(shù)據(jù)就能很好地繪制出精美的圖形。生成詞云、柱狀圖、餅

圖等等。擁有這些強(qiáng)大且穩(wěn)定的Python三方庫(kù),能十分好地完成需求。

(2).項(xiàng)目可行性

9

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

首先,python擁有強(qiáng)大的網(wǎng)絡(luò)爬蟲庫(kù),可以方便地進(jìn)行數(shù)據(jù)采集。使用

python可以編寫一個(gè)腳本,自動(dòng)登錄QQ音樂(lè)網(wǎng)并爬取相關(guān)數(shù)據(jù),如歌曲名稱、

演唱者、專輯、熱度等。其次,python擁有眾多的數(shù)據(jù)處理和分析庫(kù),如

pandas、numpy和matplotlib等,這些庫(kù)可以幫助我們對(duì)采集到的數(shù)據(jù)進(jìn)行處

理和分析。最后,python還有豐富的可視化庫(kù),如seaborn和plotly等。我們

可以使用這些庫(kù)將采集到的數(shù)據(jù)轉(zhuǎn)化為可視化的圖表,以更直觀地呈現(xiàn)數(shù)據(jù)分

析結(jié)果。因此,基于python的QQ音樂(lè)網(wǎng)數(shù)據(jù)采集分析與可視化的畢業(yè)設(shè)計(jì)是

可行的。而我將通過(guò)采集QQ音樂(lè)網(wǎng)站的歌手,歌曲名字等數(shù)據(jù),依據(jù)音樂(lè)收聽(tīng)

數(shù)量與占比進(jìn)行統(tǒng)計(jì)依據(jù)音樂(lè)關(guān)鍵詞進(jìn)行統(tǒng)計(jì),依據(jù)騰訊音樂(lè)排名變動(dòng)進(jìn)行統(tǒng)

計(jì),以此來(lái)分析人們對(duì)于音樂(lè)的看法,各種音樂(lè)又如何反作用于人類。我將從

音樂(lè)收聽(tīng)次數(shù),音樂(lè)收聽(tīng)占比,騰訊音樂(lè)排名變動(dòng)等方面來(lái)分析與總結(jié)。最后

通過(guò)餅圖,折線圖,詞云等圖形來(lái)展示成果。

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

畢業(yè)設(shè)計(jì)以QQ音樂(lè)網(wǎng)為對(duì)象,通過(guò)python爬蟲程序?qū)ζ溥M(jìn)行數(shù)據(jù)采集、

分析和可視化展示。采集目標(biāo)主要包括以下三個(gè)方面:首先是歌手信息:采集

歌手的信息,包括歌手姓名、性別、所在地、生日、個(gè)人簡(jiǎn)介等。其次是歌曲

排行榜:采集歌曲排行榜信息,包括歌曲名稱、歌手、曲風(fēng)、播放量、點(diǎn)贊量

等。最后是用戶評(píng)論:采集用戶評(píng)論信息,包括用戶評(píng)論內(nèi)容、點(diǎn)贊數(shù)、發(fā)表

時(shí)間等。在對(duì)信息進(jìn)行清洗后,并對(duì)其進(jìn)行可視化分析。比如,哪些音樂(lè)最受

觀眾喜愛(ài),哪些類型的音樂(lè)受哪些群體喜愛(ài)。哪位歌手的作品最受大眾喜愛(ài)。

在這些分析中,可以了解到人們的興趣愛(ài)好。以及歌曲創(chuàng)作水平。這樣為以后

新歌的發(fā)售創(chuàng)作起到一定的影響,而音樂(lè)作為休閑的方式更是能給人們帶來(lái)不

同的體驗(yàn)。

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

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

網(wǎng)絡(luò)爬蟲技術(shù)在數(shù)據(jù)采集和分析中扮演著非常重要的角色?;趐ython的

QQ音樂(lè)網(wǎng)數(shù)據(jù)采集分析與可視化作為一個(gè)案例,可以說(shuō)明網(wǎng)絡(luò)爬蟲技術(shù)在實(shí)際

應(yīng)用中的關(guān)鍵性。python具備強(qiáng)大的網(wǎng)絡(luò)爬蟲庫(kù),如requests和beautifulsoup

等。通過(guò)這些庫(kù),我們可以訪問(wèn)QQ音樂(lè)網(wǎng)的網(wǎng)頁(yè)、解析html文檔,并獲取所

需的數(shù)據(jù)。在此過(guò)程中需要注意反爬措施,如設(shè)置請(qǐng)求頭和使用代理ip等,以

10

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

確保程序正常運(yùn)行且不被封禁。通過(guò)python的pandas庫(kù)和numpy庫(kù),我們可

以對(duì)采集到的數(shù)據(jù)進(jìn)行清洗、整理和統(tǒng)計(jì)分析。例如,我們可以篩選出榜單中

的top10歌曲,統(tǒng)計(jì)不同地區(qū)聽(tīng)眾喜歡的流派,在這些數(shù)據(jù)分析過(guò)程中需要注

意數(shù)據(jù)的準(zhǔn)確性和合法性,以及代碼的可讀性和健壯性。最后,我們可以借助

python的matplotlib庫(kù)和seaborn庫(kù)等工具,將分析結(jié)果可視化。通過(guò)餅圖、

條形圖、折線圖等方式呈現(xiàn)數(shù)據(jù),從而更好地觀察和理解采集到的信息。數(shù)據(jù)

的可視化有利于深度分析和闡釋分析結(jié)果,有助于更準(zhǔn)確地得出結(jié)論和預(yù)測(cè)未

來(lái)的趨勢(shì)。

綜上所述,python的QQ音樂(lè)網(wǎng)數(shù)據(jù)采集分析與可視化是一個(gè)很好的案例,

說(shuō)明了網(wǎng)絡(luò)爬蟲技術(shù)在實(shí)際應(yīng)用中的重要性和必要性。網(wǎng)絡(luò)爬蟲可以使用的技

術(shù)很多。比如Scrapy庫(kù),requests庫(kù),或者是selenium庫(kù)對(duì)網(wǎng)頁(yè)進(jìn)行自動(dòng)化爬

取。Scrapy是一個(gè)異步爬蟲框架,適合爬取大規(guī)模的數(shù)據(jù),而selenium適用于

網(wǎng)站結(jié)構(gòu)復(fù)雜,且擁有強(qiáng)大的反爬機(jī)制,所以本次畢業(yè)設(shè)計(jì)選擇selenium加

lxml對(duì)獲取到的網(wǎng)頁(yè)元素結(jié)構(gòu)化來(lái)達(dá)到爬取數(shù)據(jù)的需求。

2.3.2文件存取技術(shù)

收集數(shù)據(jù)之后,將其保存到文件中以備以后使用。對(duì)于這個(gè)任務(wù),Python

提供了許多內(nèi)置庫(kù),其中包括CSV,JSON,pickle和sqlite。

CSV是一種廣泛使用的文本格式,用于存儲(chǔ)和交換簡(jiǎn)單數(shù)據(jù)表。使用Python

寫入CSV文件,執(zhí)行以下操作:

importcsv

#assume`data`isalistofdictionariesortuples

withopen('data.csv',mode='w',newline='')asfile:

fieldnames=data[0].keys()ifisinstance(data[0],dict)elseNone

writer=csv.writer(file)

writer.writerow(fieldnames)iffieldnameselseNone

forrowindata:

writer.writerow(row.values()ifisinstance(row,dict)elserow)

使用open()方法對(duì)csv文件進(jìn)行讀取,并設(shè)置編碼格式為utf8,.join()將讀

取出來(lái)的數(shù)據(jù)轉(zhuǎn)換成字符串。

11

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

2.3.3可視化技術(shù)

可視化是數(shù)據(jù)分析結(jié)果的展示方式之一,可以直觀地呈現(xiàn)數(shù)據(jù)關(guān)系與趨勢(shì)。

python中有很多跨平臺(tái)的數(shù)據(jù)可視化工具,如matplotlib、seaborn等,可以生

成折線圖、散點(diǎn)圖、柱狀圖等各類圖表??梢暬夹g(shù)是指將數(shù)據(jù)和信息通過(guò)圖

形、表格、圖像等視覺(jué)元素的方式來(lái)展示和傳達(dá)的一種技術(shù)。它可以幫助用戶

更好地理解數(shù)據(jù)和知識(shí),發(fā)現(xiàn)數(shù)據(jù)中存在的規(guī)律性,從而更好地做出決策。綜

上所述,要基于python對(duì)QQ音樂(lè)網(wǎng)數(shù)據(jù)進(jìn)行采集、分析與可視化,需要掌握

網(wǎng)絡(luò)爬蟲、數(shù)據(jù)處理、數(shù)據(jù)分析和可視化等相關(guān)技術(shù)。

以下是幾種常見(jiàn)的可視化技術(shù):折線圖:折線圖能夠顯示隨時(shí)間變化的趨

勢(shì),通常被用于顯示時(shí)間序列數(shù)據(jù)或連續(xù)變量的關(guān)系。它通常由一條水平軸和

一條垂直軸組成,數(shù)據(jù)點(diǎn)通過(guò)連接線進(jìn)行表示。條形圖:條形圖常常用來(lái)比較

不同類別之間的數(shù)據(jù)。它通常由一個(gè)縱軸和一個(gè)橫軸組成,每個(gè)類別在橫軸上

都對(duì)應(yīng)著一個(gè)相應(yīng)的條形。散點(diǎn)圖:散點(diǎn)圖能夠展示兩個(gè)變量之間的關(guān)系,例

如數(shù)據(jù)點(diǎn)的分布和趨勢(shì)。每個(gè)數(shù)據(jù)點(diǎn)對(duì)應(yīng)著一個(gè)坐標(biāo)(x,y),x和y分別代表兩個(gè)

變量的值。熱力圖:熱力圖適合展示二維或者多維數(shù)據(jù)的密度,尤其是大量的

數(shù)據(jù)。它利用不同顏色的漸變效果,將數(shù)據(jù)點(diǎn)的數(shù)量映射到一個(gè)熱度圖上。顏

色越深,代表數(shù)據(jù)點(diǎn)的數(shù)量越多。地圖:地圖是一種常見(jiàn)的空間可視化技術(shù)。

它能夠?qū)?shù)據(jù)與地理位置結(jié)合起來(lái),顯示出某個(gè)區(qū)域的含義、分布和關(guān)聯(lián)性。

數(shù)據(jù)可視化是將數(shù)據(jù)以視覺(jué)形式展示的過(guò)程,具有直觀、易懂、易操作等優(yōu)點(diǎn)。

在處理大量數(shù)據(jù)時(shí),通過(guò)可視化將數(shù)據(jù)進(jìn)行圖像化呈現(xiàn),可以更快速地捕捉到

數(shù)據(jù)中的信息和規(guī)律,從而幫助人們更好地理解數(shù)據(jù)。

以下是幾個(gè)常用的數(shù)據(jù)可視化工具:excel:excel是一個(gè)非常流行的電子表

格軟件,里面包含了豐富的圖表制作功能。tableau:tableau是一個(gè)專業(yè)的商業(yè)

數(shù)據(jù)可視化工具,擁有完善的交互式報(bào)告和數(shù)據(jù)發(fā)現(xiàn)功能。powerbi:powerbi

是微軟推出的商業(yè)智能工具,結(jié)合了Microsoftexcel和office365等技術(shù),可輕

松制作并分享精美的報(bào)告。python庫(kù):python中有許多數(shù)據(jù)可視化庫(kù),如

matplotlib、seaborn、ggplot等,通常用于生成圖表或交互式應(yīng)用程序。利用可

視化技術(shù)能將復(fù)雜的數(shù)據(jù)簡(jiǎn)單明了,清晰的展示出來(lái),方便總結(jié)和更加深入了

解。

進(jìn)行數(shù)據(jù)可視化的操作步驟如下:首先選擇數(shù)據(jù)源:先確定需要展示的數(shù)

據(jù)集,數(shù)據(jù)可以從文件、數(shù)據(jù)庫(kù)等來(lái)源獲取。其次數(shù)據(jù)清洗:如果數(shù)據(jù)中存在

錯(cuò)誤或缺失值需要進(jìn)行數(shù)據(jù)清洗操作。然后選擇可視化類型:選擇適當(dāng)?shù)目梢?/p>

12

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

化類型,如散點(diǎn)圖、柱狀圖、折線圖等。最后圖表設(shè)計(jì):設(shè)計(jì)美觀易懂的圖表,

包括布局、顏色、字體等因素。

在進(jìn)行數(shù)據(jù)可視化時(shí),可能遇到以下困難:首先是數(shù)據(jù)清洗和格式化問(wèn)題:

在進(jìn)行數(shù)據(jù)可視化之前,通常需要對(duì)數(shù)據(jù)進(jìn)行清洗和格式化。這包括刪除缺失

數(shù)據(jù)、轉(zhuǎn)換數(shù)據(jù)類型以及規(guī)范化數(shù)據(jù)格式等操作。如果數(shù)據(jù)集比較復(fù)雜,這些

處理可能需要花費(fèi)較長(zhǎng)時(shí)間。其次要選擇合適的可視化工具:根據(jù)不同的數(shù)據(jù)

類型和展示需求,可能需要使用不同的可視化工具。選擇合適的工具需要考慮

多個(gè)因素,如數(shù)據(jù)類型、數(shù)據(jù)維度、可視化類型、交互方式、效率等。之后要

學(xué)會(huì)識(shí)別關(guān)鍵變量:選擇恰當(dāng)?shù)淖兞客瑫r(shí)展示這些變量的聯(lián)系是數(shù)據(jù)可視化的

一項(xiàng)重要任務(wù)。這需要對(duì)數(shù)據(jù)有深入的理解,并能夠從中識(shí)別出關(guān)鍵變量。然

后需要解釋可視化結(jié)果:可視化結(jié)果需要被有效地解釋和呈現(xiàn)給觀眾。這需要

能夠理解各種可視化技巧并使用它們創(chuàng)建極具說(shuō)服力的圖表和圖像。最后就是

數(shù)據(jù)安全性和隱私問(wèn)題:在將企業(yè)敏感數(shù)據(jù)用于分析和可視化方面,必須確保

數(shù)據(jù)的安全和隱私,以避免數(shù)據(jù)泄露和其他風(fēng)險(xiǎn)。

通過(guò)將數(shù)據(jù)可視化,可以更加清晰地了解和解釋數(shù)據(jù)模式和趨勢(shì)。這也幫

助我們更好地向他人展示、溝通和分享數(shù)據(jù)方面的信息。相比于繁瑣的數(shù)據(jù)表

格或報(bào)告,數(shù)據(jù)可視化更具有吸引力和易讀性,并能夠更深入地揭示數(shù)據(jù)背后

的故事和見(jiàn)解。另外,數(shù)據(jù)可視化還能幫助我們快速分析大量的數(shù)據(jù),識(shí)別出

與自己業(yè)務(wù)相關(guān)的指標(biāo)和關(guān)鍵信息,從而應(yīng)對(duì)業(yè)務(wù)上面臨的挑戰(zhàn)和機(jī)會(huì)。總之,

數(shù)據(jù)可視化是一種強(qiáng)大的工具,它將大數(shù)據(jù)信息轉(zhuǎn)化成圖形化的方式,讓用戶

能夠更加易于理解,并能夠更好地作出決策,推進(jìn)業(yè)務(wù)的發(fā)展。

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

3.1采集頁(yè)面分析

首先,要進(jìn)行QQ音樂(lè)網(wǎng)數(shù)據(jù)采集,您需要使用庫(kù)和工具來(lái)發(fā)送網(wǎng)絡(luò)請(qǐng)求并

解析HTML文檔。建議您使用Python中的Requests庫(kù)和BeautifulSoup4庫(kù)來(lái)

完成此任務(wù)。以下是一個(gè)基本的示例代碼段,用于從QQ音樂(lè)網(wǎng)站獲取歌手列表:

importrequests

frombs4importBeautifulSoup

url='https://y.QQ.com/portal/singer_list.html'

headers={

'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko

13

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

)Chrome/58.0.3029.110Safari/537.3'}

res=requests.get(url,headers=headers).text

soup=BeautifulSoup(res,'html.parser')

singers=soup.find_all('ul',{'class':'singer_list'})

接下來(lái),可以將抓取到的數(shù)據(jù)存儲(chǔ)在CSV文件中,以便日后的分析。建議

您使用Pandas庫(kù)來(lái)處理和分析數(shù)據(jù)。該代碼會(huì)將從QQ音樂(lè)網(wǎng)站中獲得的歌手

列表寫入到CSV文件中:

importpandasaspd

df=pd.DataFrame(columns=['name','singer_category'])

foriteminsingers:

singer_list=item.find_all('li')

forsingerinsinger_list:

singer_name=singer.find('a').get_text()

singer_category=singer.find('p').get_text().replace('/',',')

df=df.append({'name':singer_name,'singer_category':singer_category},ignore_index=True)

df.to_csv('singer_list.csv',index=False,encoding='utf-8-sig')

現(xiàn)在,已經(jīng)成功從QQ音樂(lè)網(wǎng)站中獲得了歌手列表,并將其存儲(chǔ)為CSV文件。

接下來(lái),可以使用可視化工具(例如Matplotlib或Seaborn)對(duì)數(shù)據(jù)進(jìn)行分析

和可視化。

然后,打開瀏覽器,在搜索頁(yè)面搜索QQ音樂(lè),點(diǎn)擊進(jìn)入QQ音樂(lè)的官方網(wǎng)

頁(yè),這時(shí)候我們可以發(fā)現(xiàn)QQ音樂(lè)的網(wǎng)址為

https://y.QQ.com/n/ryQQ/toplist/26。如圖3-1所示。

14

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

圖3-1數(shù)據(jù)網(wǎng)址頁(yè)面圖

之后,按F12調(diào)出開發(fā)者工具,刷新網(wǎng)頁(yè),展示開發(fā)者工具。如圖3-2所示。

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

再打開開發(fā)者模式后,刷新網(wǎng)頁(yè)的界面。

3.2字段分析

在進(jìn)行基于python的QQ音樂(lè)網(wǎng)數(shù)據(jù)采集時(shí),需要考慮的字段信息:

15

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

(1).歌曲信息:歌曲名、歌手名、專輯名、發(fā)行時(shí)間、歌曲熱度等。

(2).用戶信息:用戶昵稱、用戶id、用戶簽名、用戶所在地等。

(3).評(píng)論信息:評(píng)論內(nèi)容、評(píng)論時(shí)間、點(diǎn)贊數(shù)、回復(fù)數(shù)等。

(4).排行榜信息:排行榜類型、排行榜日期、歌曲名、歌手名、播放量

等。

(5).分類信息:音樂(lè)分類、專輯分類、歌曲分類等。

(6).關(guān)鍵詞信息:搜索關(guān)鍵詞、熱門關(guān)鍵詞等。

需要注意的是,在進(jìn)行數(shù)據(jù)采集時(shí),需要遵守相關(guān)法律法規(guī)和網(wǎng)站的使用

協(xié)議,不得進(jìn)行非法收集和發(fā)布他人隱私信息等違法行為。首先,來(lái)到網(wǎng)頁(yè)面

打開網(wǎng)頁(yè)的選擇欄,然后將選擇欄目定位到我們所需要的數(shù)據(jù)位置,按F12調(diào)出

開發(fā)者選項(xiàng),再次刷新一下頁(yè)面再進(jìn)入,點(diǎn)擊發(fā)者工具界面上方的network(網(wǎng)

絡(luò)),搜索標(biāo)題,可以看到我們需要的所有數(shù)據(jù)信息。如圖3-3所示。

圖3-3分析數(shù)據(jù)類型頁(yè)面圖

按F12調(diào)出開發(fā)者工具,點(diǎn)擊網(wǎng)絡(luò),然后刷新網(wǎng)頁(yè),再重新搜索我們需要

尋找到QQ音樂(lè)熱歌榜數(shù)據(jù)。

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

首先,在pycharm中編寫代碼數(shù)據(jù),導(dǎo)入爬蟲所需要的庫(kù)(time,etree,

selenium,csv庫(kù))。如圖3-4所示。

16

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

圖3-4導(dǎo)入所需庫(kù)頁(yè)面圖

之后導(dǎo)入time,etree,csv,selenium庫(kù)。然后,設(shè)置請(qǐng)求頭,偽裝成瀏

覽器訪問(wèn)服務(wù)器。如圖3-5所示。

圖3-5請(qǐng)求頭內(nèi)容頁(yè)面圖

將refer,user-agent,cookie,合并到headers頭部。代碼主要實(shí)現(xiàn)了以

下功能:首先,爬取指定歌手在QQ音樂(lè)上所有歌曲的信息;其次,對(duì)爬取到的

數(shù)據(jù)進(jìn)行簡(jiǎn)單的處理和清洗;之后,利用matplotlib庫(kù)對(duì)歌曲評(píng)論數(shù)、播放量

等進(jìn)行可視化展示;然后,利用wordcloud庫(kù)生成歌詞詞云。

代碼中使用到的主要方法、函數(shù)和庫(kù)如下:requests庫(kù):進(jìn)行網(wǎng)頁(yè)請(qǐng)求;

Beautifulsoup庫(kù):解析html頁(yè)面,提取數(shù)據(jù);re庫(kù):正則表達(dá)式庫(kù),用于匹

配網(wǎng)頁(yè)內(nèi)容中的關(guān)鍵信息;pandas庫(kù):數(shù)據(jù)處理和分析庫(kù);matplotlib庫(kù):繪

制圖表庫(kù);wordCloud庫(kù):生成詞云。除此之外,還利用了python自帶的一些

函數(shù),如open()、split()等。

在使用代碼時(shí),需要注意以下幾點(diǎn):首先是爬取速度不能太快,否則可能

會(huì)被封ip;其次利用正則表達(dá)式時(shí)需要仔細(xì)考慮各種情況,避免遺漏重要信息;

17

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

之后處理數(shù)據(jù)時(shí)需要注意數(shù)據(jù)的正確性和完整性;如何繪圖時(shí)需要根據(jù)實(shí)際情

況選擇合適的圖表類型和參數(shù);最后生成詞云時(shí)需要對(duì)歌詞進(jìn)行分詞和過(guò)濾處

理,避免出現(xiàn)無(wú)意義的詞語(yǔ)。

具體的代碼如下:

importtime

fromlxmlimportetree

fromselenium.webdriverimportChrome#引入selenium瀏覽器自動(dòng)框架、選擇

谷歌瀏覽器chrome類

fromselenium.webdriver.chrome.serviceimportService#防止被反扒,

fromselenium.webdriver.chrome.optionsimportOptions#隱藏瀏覽器痕跡的

參數(shù)

mon.byimportBy#定位標(biāo)簽by

mon.action_chainsimportActionChains#動(dòng)作鏈

條,拖動(dòng),下拉什么的

importcsv

head=['歌曲','歌手','時(shí)長(zhǎng)','排名變動(dòng)']

f=open('騰訊音樂(lè)榜.csv','w',encoding='utf-8-sig',newline='')

w=csv.writer(f)

w.writerow(head)

f.close()#提前定義,保存解析函數(shù)..方便以下使用

defsave_data():

#拿到網(wǎng)頁(yè)源代碼、測(cè)試一下,通過(guò)之后,就要堆頁(yè)面數(shù)據(jù)進(jìn)行提取了

page_text=driver.page_source

print(page_text)

#拿到網(wǎng)頁(yè)源代碼,etree解析器進(jìn)行解析,實(shí)例化etree

tree=etree.HTML(page_text)

li_list=tree.xpath('//ul[@class="songlist__list"]/li')

forliinli_list:

singer=li.xpath('./div/div[@class="songlist__artist"]/a/text()')[0]

song='

《'+li.xpath('./div/div[@class="songlist__songname"]/span/a[2]/text()

')[0]+'》

18

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

'long=li.xpath('./div/div[@class="songlist__time"]/text()')[0]

##根據(jù)標(biāo)簽、判斷排名上升or下降...

uod=li.xpath('.//div[@class="songlist__rank"]')[0]

up_down_num=li.xpath('.//div[@class="songlist__rank"]/i/@class')[0]

ifup_down_num=="icon_rank_keep":

up_or_down='0'

ifup_down_num=="icon_rank_down":

up_or_down='-'+uod.xpath('./text()')[0]

ifup_down_num=="icon_rank_up":

up_or_down=uod.xpath('./text()')[0]

ifup_down_num=='icon_rank_new':

up_or_down='0'

print(singer,song,long,up_or_down)

data=[song,singer,long,up_or_down]

f=open('騰訊音樂(lè)榜.csv','a',encoding='utf-8-sig',newline='')

w=csv.writer(f)

w.writerow(data)

f.close()

time.sleep(0.5)

defscroll_to_add(num):

#用于滑塊增大的系數(shù)

time.sleep(2)

scroll=f"window.scrollTo(0,{num*6000})"

driver.execute_script(scroll)

if__name__=='__main__':

js='window.scrollTo(0,document.documentElement.scrollHeight)'#js注入

的腳本命令,該動(dòng)作為,鼠標(biāo)滑倒網(wǎng)頁(yè)的最底部

scroll="window.scrollTo(0,10000)"

service=Service()

opt=Options()

opt.add_argument('--disable-blink-features=AutomationControlled')#類

似于headers操作.隱藏瀏覽器請(qǐng)求頭文件

19

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

opt.add_experimental_option('detach',True)#防止報(bào)錯(cuò),瀏覽器自動(dòng)關(guān)閉

#opt.headless=True#開啟無(wú)頭模式,減少io對(duì)內(nèi)存的占用,提升速度不用打

開瀏覽器就能獲取數(shù)據(jù)

num_litt=[26,27,57,52,67,\

5,59,61,3,16,17,\

28,63,60,64,29,65,\

58,72,73,70,36]

defdiffrent_page(num):#傳入不同頁(yè)面,分別解析

#起始的鏈接

url=f'https://y.QQ.com/n/ryQQ/toplist/{num}'

driver=Chrome(service=service,options=opt)#實(shí)例化chrome.添加參數(shù)

driver.maximize_window()#z最大化窗口

driver.get(url)#自動(dòng)化,打開網(wǎng)頁(yè)

time.sleep(2.5)#等待3秒,讓瀏覽器加載數(shù)據(jù),渲染數(shù)據(jù)...

driver.execute_script(js)

#拿到網(wǎng)頁(yè)源代碼、測(cè)試一下,通過(guò).接下來(lái),就要堆頁(yè)面數(shù)據(jù)進(jìn)行提取了

page_text=driver.page_source

print(page_text)

#拿到網(wǎng)頁(yè)源代碼,etree解析器進(jìn)行解析,實(shí)例化etree

tree=etree.HTML(page_text)

print(tree)

save_data()#新歌榜

driver.find_element(By.XPATH,'//*[@id="app"]/div/div[2]/div[1]/dl[1]

/dd[3]/a').click()

save_data()

scroll_to_add(2)#喜力熱歌榜

driver.find_element(By.XPATH,'//*[@id="app"]/div/div[2]/div[1]/dl[1]

/dd[5]/a').click()

save_data()

scroll_to_add(2)#騰訊音樂(lè)人-原創(chuàng)榜

driver.find_element(By.XPATH,'//*[@id="app"]/div/div[2]/div[1]/dl[1]

/dd[6]/a').click()

20

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

save_data()

scroll_to_add(6)#聽(tīng)歌識(shí)曲榜

print('聽(tīng)歌識(shí)曲')

driver.find_element(By.XPATH,'//*[@id="app"]/div/div[2]/div[1]/dl[1]

/dd[7]/a').click()

save_data()

scroll_to_add(4)

driver.close()

num_litt=[63]

fornuminnum_litt:

time.sleep(1)#起始的鏈接

url=f'https://y.QQ.com/n/ryQQ/toplist/{num}'

print(url)

driver=Chrome(service=service,options=opt)#實(shí)例化chrome.添加參數(shù)

#driver.maximize_window()#z最大化窗口

driver.get(url)#自動(dòng)化,打開網(wǎng)頁(yè)

time.sleep(2)#等待3秒,讓瀏覽器加載數(shù)據(jù),渲染數(shù)據(jù)...

driver.execute_script(js)

scroll_to_add(1)

time.sleep(1)#拿到網(wǎng)頁(yè)源代碼、測(cè)試一下,通過(guò).接下來(lái),就要堆頁(yè)面數(shù)據(jù)進(jìn)

行提取了

page_text=driver.page_source

print(page_text)#拿到網(wǎng)頁(yè)源代碼,etree解析器進(jìn)行解析,實(shí)例化etree

tree=etree.HTML(page_text)

print(tree)#熱歌榜

save_data()

time.sleep(1)

driver.close()

4數(shù)據(jù)清洗與處理

數(shù)據(jù)清洗與處理指的是從原始數(shù)據(jù)集中刪除或修復(fù)不完整、不準(zhǔn)確、重復(fù)

或無(wú)效數(shù)據(jù)的過(guò)程,以便進(jìn)行更有意義的分析和建模。是為了刪除重復(fù)信息、

21

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

糾正存在的錯(cuò)誤,并提供數(shù)據(jù)一致性而對(duì)數(shù)據(jù)進(jìn)行重新審閱和校驗(yàn)的過(guò)程。在

進(jìn)行數(shù)據(jù)預(yù)處理時(shí),首先要進(jìn)行數(shù)據(jù)清理,以確保最后得到的結(jié)果是正確的。

其主要目的是使原始數(shù)據(jù)變得更加規(guī)范,便于后續(xù)數(shù)據(jù)分析

在進(jìn)行數(shù)據(jù)分析時(shí)會(huì)面臨以下困難:首先是數(shù)據(jù)存在缺失:很多數(shù)據(jù)都存在著

缺失值,需要使用適當(dāng)?shù)姆椒ㄟM(jìn)行填充或刪除。但是如果缺失值過(guò)多,可能會(huì)

導(dǎo)致樣本數(shù)據(jù)不足而影響分析結(jié)果。其次數(shù)據(jù)會(huì)有異常值:在真實(shí)數(shù)據(jù)中,很

多會(huì)出現(xiàn)異常值或極端值,這些值會(huì)對(duì)后續(xù)分析產(chǎn)生較大的影響。因此,需要

采用合適的方法來(lái)識(shí)別和處理異常值。之后會(huì)出現(xiàn)重復(fù)的數(shù)據(jù):

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論