版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 省級(jí)產(chǎn)業(yè)園區(qū)基礎(chǔ)設(shè)施現(xiàn)狀分析
- 2024年網(wǎng)絡(luò)游戲授權(quán)合同范本:游戲版權(quán)授權(quán)3篇
- 2024年版勞動(dòng)法:勞動(dòng)協(xié)議與聘用協(xié)議區(qū)別明細(xì)版
- 測(cè)溫系統(tǒng)課程設(shè)計(jì)
- 2024年油氣田勘探開發(fā)與合作合同
- 2024宅基地買賣合同范本:農(nóng)村宅基地使用權(quán)轉(zhuǎn)讓協(xié)議3篇
- 2024年技術(shù)服務(wù)合同范本:服務(wù)內(nèi)容與技術(shù)支持
- 用stm32的課程設(shè)計(jì)
- 瑜伽隨拍課程設(shè)計(jì)理念
- 2024年事業(yè)單位兼職人員勞動(dòng)合同3篇
- 《湖北省市政基礎(chǔ)設(shè)施工程質(zhì)量標(biāo)準(zhǔn)化圖冊(cè)》(燃?xì)夤芫W(wǎng)工程)
- 2024-2025學(xué)年人教版八年級(jí)上冊(cè)數(shù)學(xué)期末押題卷(含答案)
- 高標(biāo)準(zhǔn)農(nóng)田建設(shè)的風(fēng)險(xiǎn)管理與應(yīng)急預(yù)案
- 衡重式及重力式擋土墻自動(dòng)計(jì)算表
- 有關(guān)大學(xué)生寒假生活計(jì)劃-大學(xué)生的寒假計(jì)劃
- 2024年01月11129土木工程力學(xué)(本)期末試題答案
- 汽車維修項(xiàng)目明細(xì)表1
- 小學(xué)六年級(jí)數(shù)學(xué)上期家長(zhǎng)會(huì)精品課件
- (完整版)從句的引導(dǎo)詞總表
- 財(cái)綜[2001]94號(hào)
- 美國(guó)EVUS登記信息采集表
評(píng)論
0/150
提交評(píng)論