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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(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.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采集頁面分析13

3.2字段分析15

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

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

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

4.2數(shù)據(jù)儲存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ù)音樂收聽數(shù)量與占比進(jìn)行統(tǒng)計(jì)30

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

I

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

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

5.3綜述36

6小結(jié)37

參考資料38

II

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

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

1引言

大數(shù)據(jù)是一種長期、大量、多元化且運(yùn)轉(zhuǎn)較快的數(shù)據(jù),它可以帶來人們許

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

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

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

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

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

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

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

1.1項(xiàng)目背景

現(xiàn)在進(jìn)入了快餐時代,高標(biāo)準(zhǔn)的娛樂化對人們來說是一個硬需求。人們在

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

式來放松自己,而音樂作為一種輕松,便捷的方式,無疑成為人們的首選。在

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

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

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

相對于音樂來說,它涉及到的東西太多了。它不僅涉及到音樂的種類,比

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

語等等。同時也涉及到音樂的收聽群眾,比如國內(nèi)的和國外的,還有我國著名

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

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

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

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

1

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

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

1.2.1Python介紹

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

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

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

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

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

都要使用到。

在使用PyCharm時會產(chǎn)生一些習(xí)慣上的語法錯誤;對庫的選擇會有疑問,

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

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

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

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

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

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

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

#導(dǎo)入庫

importrequests

frombs4importBeautifulSoup#發(fā)送請求并獲取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)行代碼,將會輸出熱歌榜的歌手名字和

歌曲名字。

2

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

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

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

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

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

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

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

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

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

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

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

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

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

要處理反爬蟲機(jī)制,確保請求過于頻繁不被禁止爬蟲。盡管這些問題都會影響

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

1.2.2MySQL介紹

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

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

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

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

驟:首先,創(chuàng)建數(shù)據(jù)庫和表格;在MySQL中創(chuàng)建一個數(shù)據(jù)庫和一個表格來存儲

爬取的數(shù)據(jù)。創(chuàng)建一個名為QQ_music的數(shù)據(jù)庫和一個名為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ì)

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

Python的’MySQL-connector’

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

爬蟲程序,通過Python的requests庫和BeautifulSoup庫,向QQ音樂熱歌榜

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

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

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

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

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

爬取QQ音樂熱歌榜數(shù)據(jù)時,需要使用Python爬蟲來獲取數(shù)據(jù)。可以使用Python

的Requests庫和BeautifulSoup庫來發(fā)送HTTP請求和解析HTML頁面。然后,

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

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

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

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

全性。

4

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

1.2.3Excel介紹

Excel可以為爬取QQ音樂熱歌榜數(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)行簡單的數(shù)據(jù)計(jì)算,例如對歌曲排名進(jìn)行求和、平均。

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

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

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

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

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

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

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

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

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

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

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

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

間和精力。

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

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

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

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

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

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

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

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

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

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

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

5

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

除或修改數(shù)據(jù)時,請務(wù)必小心操作,以免意外刪除或更改錯誤的內(nèi)容??偟膩?/p>

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

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

1.2.4Jupyternotebook介紹

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

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

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

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

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

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

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

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

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

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

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

6

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

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

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

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

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

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

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

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

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

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

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

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

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

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

打開一個新的Notebook并輸入以下命令來安裝所需的庫:

pipinstallrequests.

pipinstallbeautifulsoup4.

pipinstallpandas

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

importrequests

frombs4importBeautifulSoup

importpandasaspd

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

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

response=requests.get(url)

html=response.content

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

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

查找歌曲名稱、歌手和專輯,并將其存儲到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')

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

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

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

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

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

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

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

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

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

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

樂熱歌榜數(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運(yùn)行代碼并查看執(zhí)行的結(jié)果,便于用

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

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

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

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

8

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

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

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

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

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

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

法錯誤等問題。

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

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

是有一定局限性的。

2需求分析

2.1可行性需求分析

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

9

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

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

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

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

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

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

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

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

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

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

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

音樂收聽次數(shù),音樂收聽占比,騰訊音樂排名變動等方面來分析與總結(jié)。最后

通過餅圖,折線圖,詞云等圖形來展示成果。

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

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

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

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

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

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

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

觀眾喜愛,哪些類型的音樂受哪些群體喜愛。哪位歌手的作品最受大眾喜愛。

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

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

同的體驗(yàn)。

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

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

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

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

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

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

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

10

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

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

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

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

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

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

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

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

來的趨勢。

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

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

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

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

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

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

2.3.2文件存取技術(shù)

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

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

CSV是一種廣泛使用的文本格式,用于存儲和交換簡單數(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()方法對csv文件進(jìn)行讀取,并設(shè)置編碼格式為utf8,.join()將讀

取出來的數(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)系與趨勢。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

解。

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

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

錯誤或缺失值需要進(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ù)據(jù)清洗和格式化問題:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

3.1采集頁面分析

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

解析HTML文檔。建議您使用Python中的Requests庫和BeautifulSoup4庫來

完成此任務(wù)。以下是一個基本的示例代碼段,用于從QQ音樂網(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'})

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

您使用Pandas庫來處理和分析數(shù)據(jù)。該代碼會將從QQ音樂網(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音樂網(wǎng)站中獲得了歌手列表,并將其存儲為CSV文件。

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

和可視化。

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

頁,這時候我們可以發(fā)現(xiàn)QQ音樂的網(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)址頁面圖

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

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

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

3.2字段分析

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

15

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

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

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

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

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

等。

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

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

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

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

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

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

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

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

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

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

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

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

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

16

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

17

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

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

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

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

具體的代碼如下:

importtime

fromlxmlimportetree

fromselenium.webdriverimportChrome#引入selenium瀏覽器自動框架、選擇

谷歌瀏覽器chrome類

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

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

參數(shù)

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

mon.action_chainsimportActionChains#動作鏈

條,拖動,下拉什么的

importcsv

head=['歌曲','歌手','時長','排名變動']

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

w=csv.writer(f)

w.writerow(head)

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

defsave_data():

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

page_text=driver.page_source

print(page_text)

#拿到網(wǎng)頁源代碼,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('騰訊音樂榜.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注入

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

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

service=Service()

opt=Options()

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

似于headers操作.隱藏瀏覽器請求頭文件

19

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

opt.add_experimental_option('detach',True)#防止報錯,瀏覽器自動關(guān)閉

#opt.headless=True#開啟無頭模式,減少io對內(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):#傳入不同頁面,分別解析

#起始的鏈接

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)#自動化,打開網(wǎng)頁

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

driver.execute_script(js)

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

page_text=driver.page_source

print(page_text)

#拿到網(wǎng)頁源代碼,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)#騰訊音樂人-原創(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)#聽歌識曲榜

print('聽歌識曲')

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)#自動化,打開網(wǎng)頁

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

driver.execute_script(js)

scroll_to_add(1)

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

行提取了

page_text=driver.page_source

print(page_text)#拿到網(wǎng)頁源代碼,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ù)

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

21

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

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

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

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

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

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

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

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

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

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論