版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
目錄
1引言............................................................................................................................1
1.1項(xiàng)目背景......................................................................................................1
1.2開發(fā)環(huán)境與工具..........................................................................................2
1.2.1Python簡介..........................................................................................2
1.2.2MySQL簡介............................................................................................3
1.2.3JupyterNotebook簡介......................................................................3
1.2.4PyCharm簡介........................................................................................4
2需求分析....................................................................................................................5
2.1可行性需求分析..........................................................................................5
2.2采集目標(biāo)功能分析......................................................................................6
2.3關(guān)鍵技術(shù)分析..............................................................................................6
2.3.1網(wǎng)絡(luò)爬蟲技術(shù).......................................................................................6
2.3.2文件存取技術(shù).......................................................................................8
2.3.3可視化技術(shù)...........................................................................................9
3數(shù)據(jù)采集..................................................................................................................10
3.1采集頁面分析............................................................................................10
3.2字段分析....................................................................................................15
3.3編程實(shí)現(xiàn)....................................................................................................16
4數(shù)據(jù)清洗與處理......................................................................................................18
4.1數(shù)據(jù)清洗....................................................................................................18
4.2數(shù)據(jù)儲(chǔ)存....................................................................................................21
4.3編程實(shí)現(xiàn)....................................................................................................22
5數(shù)據(jù)統(tǒng)計(jì)與分析......................................................................................................23
5.1數(shù)據(jù)準(zhǔn)備....................................................................................................23
5.2數(shù)據(jù)展示....................................................................................................25
5.2.1依據(jù)專輯進(jìn)行統(tǒng)計(jì).............................................................................25
5.2.2依據(jù)標(biāo)簽類型進(jìn)行統(tǒng)計(jì).....................................................................26
I
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
5.2.3根據(jù)歌手上榜的歌曲量統(tǒng)計(jì)和分析.................................................27
5.3綜述............................................................................................................28
6小結(jié)..........................................................................................................................29
參考資料.........................................................................................................................30
II
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
基于Python的咪咕音樂網(wǎng)站數(shù)據(jù)采集與分析
1引言
在當(dāng)今時(shí)代背景下,大數(shù)據(jù)與人工智能等計(jì)算機(jī)互聯(lián)網(wǎng)技術(shù)在為百姓民生
的各個(gè)方面提供了智能生活的技術(shù)基礎(chǔ)。
衣食住行、吃喝玩樂等方面產(chǎn)生的海量數(shù)據(jù)等待開發(fā)的價(jià)值愈來愈大,而
當(dāng)今這代人正處于這數(shù)據(jù)時(shí)代的狂潮中,抓住其中的機(jī)遇,便有飛黃騰達(dá)的機(jī)
會(huì)。
音樂領(lǐng)域產(chǎn)生的數(shù)據(jù)價(jià)值同樣具備如此,它作為一種文化藝術(shù)形式,在全
球范圍內(nèi)一直在不斷發(fā)展和演變。全球化和跨文化交流的增加,使得音樂風(fēng)格
越來越多樣化和包容性。人們對不同文化、民族和性別的音樂越來越包容和欣
賞,這也使得更多的音樂類型和藝術(shù)家能夠脫穎而出。
隨著數(shù)字技術(shù)的發(fā)展,音樂的傳播和消費(fèi)方式也發(fā)生了巨大的變化。流媒
體服務(wù)的興起使得音樂更加方便和易于獲取,同時(shí)也使得音樂產(chǎn)業(yè)的商業(yè)模式
發(fā)生了變化。音樂和其他藝術(shù)形式的跨領(lǐng)域合作越來越普遍。比如,音樂和電
影、游戲、時(shí)尚等領(lǐng)域的結(jié)合,創(chuàng)造出了更加豐富和有趣的作品。
總的來說,音樂發(fā)展的現(xiàn)狀和趨勢是多樣性、數(shù)字化、跨界合作、可持續(xù)
發(fā)展和社交媒體化。隨著技術(shù)的不斷發(fā)展和人們對音樂的需求不斷變化,音樂
產(chǎn)業(yè)也將繼續(xù)不斷創(chuàng)新和發(fā)展。因此,音樂領(lǐng)域所產(chǎn)生的數(shù)據(jù)價(jià)值也越來越不
可忽視。
1.1項(xiàng)目背景
隨著網(wǎng)絡(luò)技術(shù)的進(jìn)步,人們不僅能夠通過網(wǎng)絡(luò)學(xué)習(xí),還能夠享受各種附帶
產(chǎn)品的好處,諸如網(wǎng)絡(luò)音樂和游戲和小說等等。
越來越多的人選擇在網(wǎng)上聽音樂、下載音樂。因此,了解音樂的流行程度
和市場趨勢就變得尤為重要。對于一家音樂公司而言,需要將音樂網(wǎng)站中產(chǎn)生
的數(shù)據(jù)價(jià)值挖掘出來,為公司的發(fā)展帶來更多的利益空間。那么,就需要對自
己運(yùn)營的音樂網(wǎng)站爬取統(tǒng)計(jì)出有用的信息,而爬取音樂排行榜網(wǎng)站數(shù)據(jù)是數(shù)據(jù)
挖掘技術(shù)在實(shí)際中的應(yīng)用。
因此,在這樣一個(gè)背景下,爬取音樂排行榜網(wǎng)站數(shù)據(jù)并做出分析對于用戶
和企業(yè)都有巨大的價(jià)值。它可以幫助用戶快速得到最新、最熱門的歌曲信息,
1
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
并且基于數(shù)據(jù)分析和推薦算法來為用戶提供針對性和個(gè)性化的推薦服務(wù)。對于
商業(yè)公司而言,也能夠通過對用戶口味和偏好進(jìn)行深入分析,為公司提供更加
精細(xì)化的市場調(diào)研和宣傳方案。
爬取音樂排行榜網(wǎng)站數(shù)據(jù)還可以具有學(xué)術(shù)研究價(jià)值。比如可以研究某段時(shí)
間內(nèi)不同地區(qū)或群體喜歡哪些類型、風(fēng)格、歌手的音樂,從中發(fā)現(xiàn)一些文化現(xiàn)
象并進(jìn)行深入思考。
本次畢業(yè)設(shè)計(jì)就是獲取咪咕音樂網(wǎng)站的音樂排行榜中的歌曲信息,以下是
爬取歌曲信息并對數(shù)據(jù)進(jìn)行處理和可視化的操作步驟。
首先對大型咪咕音樂網(wǎng)站排行榜的網(wǎng)頁源代碼進(jìn)行網(wǎng)頁解析,然后爬取歌
曲的網(wǎng)址后,再對歌曲地址進(jìn)行一次網(wǎng)頁解析后獲取詳細(xì)的歌曲信息。接下來,
將爬取得到的歌曲數(shù)據(jù)進(jìn)行數(shù)據(jù)清洗和分析,保證數(shù)據(jù)的完整性和準(zhǔn)確性。最
后再采取可視化技術(shù)將處理后的數(shù)據(jù)用圖表的形式展示,得到相應(yīng)的數(shù)據(jù)信息
結(jié)論。
1.2開發(fā)環(huán)境與工具
1.2.1Python簡介
Python是由荷蘭數(shù)學(xué)家和計(jì)算機(jī)科學(xué)研究學(xué)會(huì)的吉多·范羅蘇姆在20世
紀(jì)90年代初設(shè)計(jì)開發(fā)的一種解釋型編程語言。
Python語言最大的特點(diǎn)就是簡單,語法簡潔明了,初學(xué)者也容易掌握。相
較于其他編程語言,Python實(shí)現(xiàn)同一功能的代碼通常最短,而且Python的第三
方庫足夠豐富、免費(fèi)開源、支持跨多平臺(tái)且可移植性強(qiáng)。
Python可以用于編寫網(wǎng)絡(luò)爬蟲,從而可以爬取咪咕音樂網(wǎng)站排行榜的歌單
數(shù)據(jù)信息。具體地說,可以使用Python中的第三方庫(例如requests、re、etree
等)來模擬瀏覽器請求數(shù)據(jù),然后解析HTML或XML文件,提取出排行榜相關(guān)的
信息。
以咪咕音樂排行榜網(wǎng)站為例,可以使用requests、正則表達(dá)式和Xpath庫
向網(wǎng)頁發(fā)送請求并解析HTML內(nèi)容,在解析過程中篩選出有用的信息,如歌單網(wǎng)
址、歌曲名稱、歌手、歌曲專輯等等。通過分析網(wǎng)頁源代碼,可以發(fā)現(xiàn)音樂排
行榜數(shù)據(jù)存儲(chǔ)在特定的URL上,因此只需要構(gòu)造相應(yīng)的URL并發(fā)送請求即可獲
取大量排行榜數(shù)據(jù)。
總的來說,Python作為一種通用編程語言,在網(wǎng)絡(luò)爬蟲領(lǐng)域有著廣泛的應(yīng)
用。利用Python網(wǎng)絡(luò)爬蟲具有高效、便捷和靈活性強(qiáng)等優(yōu)點(diǎn),還能支持多種數(shù)
2
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
據(jù)存儲(chǔ)格式(如文本文件、數(shù)據(jù)庫等)。
同時(shí),Python還包含大量的第三方庫,以下是本次畢業(yè)設(shè)計(jì)所涉及到的相
關(guān)庫介紹。
(1).Requests:HTTP協(xié)議訪問及網(wǎng)絡(luò)爬蟲庫,比urllib使用更簡潔。
(2).Re:正則表達(dá)式解析和處理功能庫,里面包含了多種字符串匹配的方
法。
(3).Csv:csv屬于python中的內(nèi)置模塊,它能夠讀取csv格式的文件或者
將數(shù)據(jù)存入到csv表格中,也能讀取txt格式文件或者將數(shù)據(jù)存入到txt表格
中。
(4).NumPy:處理數(shù)據(jù)類型相同的多維數(shù)組庫,NumPy庫的數(shù)據(jù)結(jié)構(gòu)比
Python自帶的更加高效。
(5).Pandas:基于NumPy的Python數(shù)據(jù)分析高層次應(yīng)用庫。提供了易用的
數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)分析工具,操作索引即操作數(shù)據(jù)。
(6).Matplotlib:繪圖庫,主要是偏向于二維繪圖包括折線圖、條形圖、
扇形圖、散點(diǎn)圖、直方圖等等。
1.2.2MySQL簡介
MySQL是一款由瑞典MySQLAB公司研發(fā)的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),現(xiàn)屬于
Oracle旗下產(chǎn)品,標(biāo)志為海豚,象征其讀寫速度快、準(zhǔn)確無誤。
相較于儲(chǔ)存所有數(shù)據(jù)于同一倉庫內(nèi),MySQL采用關(guān)系型儲(chǔ)存方式,將數(shù)據(jù)分
散至不同表中,提高了速度和靈活性。其安全、高效且與多款主流計(jì)算機(jī)語言
高度兼容,是當(dāng)前最受歡迎的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)之一。除此之外,其開放
源碼的特點(diǎn)也使得中小型和大型網(wǎng)站廣泛采用。
MySQL可以用來存儲(chǔ)和處理大量的結(jié)構(gòu)化數(shù)據(jù),而本次畢業(yè)設(shè)計(jì)爬取的咪咕
音樂網(wǎng)站排行榜歌曲數(shù)據(jù)就是大量的結(jié)構(gòu)化數(shù)據(jù),所以這也是選擇它作為數(shù)據(jù)
存儲(chǔ)的理由。
MySQL除了存儲(chǔ)功能,還可以用于查詢、更新和刪除數(shù)據(jù)等操作。因此,可
以通過SQL語句將存儲(chǔ)到MySQL數(shù)據(jù)庫的歌單數(shù)據(jù)進(jìn)行高效、靈活和精確的查
詢和分析,從而快速了解用戶需求和流行趨勢,并做出相應(yīng)的決策。
1.2.3JupyterNotebook簡介
JupyterNotebook是一款兼容性強(qiáng)的基于Web的開源應(yīng)用軟件,它的文本
和代碼編輯功能非常強(qiáng)大且交互性良好。無論是進(jìn)行數(shù)據(jù)分析還是邏輯整理,
3
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
使用JupyterNotebook都能事半功倍。它不僅支持Python,還支持其他40多
種編程語言,并繼承了IPython的所有優(yōu)點(diǎn)。
正是因?yàn)檫@些特性,讓JupyterNotebook在機(jī)械學(xué)習(xí),數(shù)據(jù)清洗、數(shù)據(jù)分
析、數(shù)據(jù)挖掘等領(lǐng)域得到眾多程序員的喜愛。對于初學(xué)者來說安裝Jupyter
Notebook的方法就是安裝Anaconda。因?yàn)锳naconda是免費(fèi)的,可以輕松地完
成該軟件的下載和安裝。
JupyterNotebook具備交互式計(jì)算環(huán)境,它可以讓用戶在瀏覽器中編寫、
運(yùn)行和共享代碼。使用JupyterNotebook對爬取音樂網(wǎng)站排行榜的數(shù)據(jù)進(jìn)行數(shù)
據(jù)清洗主要具備以下優(yōu)勢。
(1).JupyterNotebook支持Python語言,而Python是一種流行的網(wǎng)絡(luò)爬
蟲和數(shù)據(jù)處理語言。可以在JupyterNotebook中使用Python進(jìn)行音樂排行榜數(shù)
據(jù)的網(wǎng)頁抓取、數(shù)據(jù)清洗、分析和可視化等操作。
(2).JupyterNotebook還支持Markdown語法,可以直接在Notebook中添
加富文本內(nèi)容、公式、鏈接等元素。這些功能可以幫助你更好地記錄和分享代
碼思路、實(shí)驗(yàn)結(jié)果和心得體會(huì)。
綜上所述,JupyterNotebook通過結(jié)合Python語言和豐富的插件庫,可以
高效地實(shí)現(xiàn)對咪咕音樂排行榜歌曲數(shù)據(jù)的數(shù)據(jù)清洗以及簡單方便的數(shù)據(jù)準(zhǔn)備。
1.2.4PyCharm簡介
PyCharm是一款Python集成開發(fā)環(huán)境,在當(dāng)下非常流行。它具有良好的編
碼、調(diào)試、版本控制和測試工具,可以幫助程序員更方便地編寫優(yōu)秀的Python
代碼。而對于爬蟲爬取咪咕音樂排行榜的歌曲數(shù)據(jù)信息來說,PyCharm也可以提
供許多便利。
首先,PyCharm集成了強(qiáng)大的Python調(diào)試器。在爬蟲的開發(fā)過程中,會(huì)遇
到許多錯(cuò)誤,例如請求超時(shí)、頁面解析錯(cuò)誤等。這時(shí),可以使用PyCharm的調(diào)
試工具手動(dòng)調(diào)試代碼,定位問題并修復(fù)。調(diào)試工具可以其逐行執(zhí)行代碼,并監(jiān)
視變量和引用。這可以大大提高代碼調(diào)試的效率和準(zhǔn)確性。
其次,PyCharm同樣提供了出色的編碼實(shí)用工具。爬蟲編碼通常會(huì)包含大量
字符串操作、正則表達(dá)式處理和編碼轉(zhuǎn)換。PyCharm內(nèi)置了很多實(shí)用的插件,可
以使這些操作更加簡單和高效。例如,它可以自動(dòng)補(bǔ)全變量名和方法名稱,高
亮語法錯(cuò)誤和代碼警告,快速跳轉(zhuǎn)到變量定義和查看文檔,以及執(zhí)行快捷鍵自
動(dòng)生成代碼。這些功能可以讓程序員更加專注于開發(fā)和調(diào)試自己的代碼,而不
必?fù)?dān)心代碼中不必要的錯(cuò)誤和繁瑣的細(xì)節(jié)。
4
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
最后,PyCharm在測試方面也提供了很大的支持。任何程序都需要經(jīng)過完整
和準(zhǔn)確的測試,以保證其在生產(chǎn)環(huán)境中能夠正常運(yùn)行。PyCharm可以為其生成測
試框架和測試報(bào)告,并支持持續(xù)集成和測試,提高代碼的完整性和準(zhǔn)確性。
本次畢業(yè)設(shè)計(jì)主要依靠PyCharm開發(fā)工具完成對咪咕音樂排行榜數(shù)據(jù)的爬
取,存儲(chǔ)實(shí)現(xiàn)和可視化功能。
在爬取咪咕音樂排行榜歌曲相關(guān)數(shù)據(jù)信息時(shí),用PyCharm可以更加輕松、
快捷地開發(fā)出高效的爬蟲程序,并在保證程序穩(wěn)定運(yùn)行的前提下,不斷地迭代
和更新爬蟲業(yè)務(wù)邏輯。
總的來說,PyCharm提供的強(qiáng)大的編碼、調(diào)試和測試工具使其成為爬蟲開發(fā)
的理想工具。其內(nèi)置的各種實(shí)用插件可以大大提高代碼開發(fā)的效率和準(zhǔn)確性。
2需求分析
2.1可行性需求分析
(1).政策可行性
首先需確認(rèn),是否有可以合法獲取數(shù)據(jù)的渠道和方式。需要了解音樂網(wǎng)站
的相關(guān)規(guī)定和政策,是否允許第三方爬取其數(shù)據(jù)??傊诤戏ǖ臈l件下,
爬取可行的音樂網(wǎng)站排行榜數(shù)據(jù)。
(2).技術(shù)可行性
本次畢業(yè)設(shè)計(jì)中將使用Python語言來實(shí)現(xiàn)數(shù)據(jù)獲取,數(shù)據(jù)清洗,數(shù)據(jù)可視
化等操作。在數(shù)據(jù)獲取的過程中遇到一些問題,通過抓包分析發(fā)現(xiàn)咪咕音樂網(wǎng)
站歌單信息頁面的數(shù)據(jù)是動(dòng)態(tài)傳輸?shù)?,所以通過瀏覽器控制臺(tái)可以獲取請求和
其參數(shù)。得到網(wǎng)頁面數(shù)據(jù)的返回值。
然后將獲取的原始數(shù)據(jù)儲(chǔ)存到txt文件,以便在后續(xù)的數(shù)據(jù)預(yù)處理和可視
化中再進(jìn)行調(diào)用。最后再將處理過后的數(shù)據(jù)存入MySQL數(shù)據(jù)庫中做持久化儲(chǔ)存。
以上為此次畢業(yè)設(shè)計(jì)的技術(shù)可行性,在后續(xù)的工作中會(huì)將所有的步驟實(shí)現(xiàn)
到位,并保證數(shù)據(jù)的準(zhǔn)確性和安全性。
(3).需求可行性
優(yōu)美動(dòng)聽的音樂可以放松人的心情,是人們在苦燥煩悶時(shí)極佳的“調(diào)味
劑”。有時(shí),有音樂的陪伴,會(huì)溫暖消冷的心神。
本次畢業(yè)設(shè)計(jì)通過爬取咪咕音樂排行榜的數(shù)據(jù),來分析當(dāng)日排行榜上的歌
曲信息。然后從歌手、標(biāo)簽、專輯等方面對其進(jìn)行深度剖析,分析出有價(jià)值的
信息,最后通過數(shù)據(jù)可視化得出結(jié)論。
5
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
(4).數(shù)據(jù)可行性
在獲取到所需數(shù)據(jù)后,需要對這些數(shù)據(jù)進(jìn)行清洗、處理、統(tǒng)計(jì)等分析工作。
因此,在開始之前需要確定所要收集的數(shù)據(jù)類型與數(shù)量,并明確使用何種方法
來對數(shù)據(jù)進(jìn)行處理以滿足畢業(yè)設(shè)計(jì)指標(biāo)要求。
2.2采集目標(biāo)功能分析
本次畢業(yè)設(shè)計(jì)的數(shù)據(jù)集來源為咪咕音樂排行榜網(wǎng)站,通過Python爬取咪咕
音樂所有排行榜上歌曲的信息。所選擇的音樂排行榜榜單分別有新歌榜,熱歌
榜,原創(chuàng)榜,影視榜,內(nèi)地榜,港臺(tái)榜,歐美榜,日韓榜,KTV榜,網(wǎng)絡(luò)榜和彩
鈴榜。獲取的目標(biāo)數(shù)據(jù)分別是歌單排名,歌曲名稱,演唱者,作詞者,作曲者,
所屬專輯以及音樂標(biāo)簽。
對獲取的數(shù)據(jù)進(jìn)行去重、過濾無效信息,格式轉(zhuǎn)換等操作,生成規(guī)范化的
數(shù)據(jù)表格。數(shù)據(jù)清洗后共860條記錄,爬取完成后盡可能的去檢查數(shù)據(jù)的準(zhǔn)確
性,確保爬取的數(shù)據(jù)無誤并且是屬于咪咕音樂實(shí)時(shí)存在的排行榜歌曲信息。
將獲取到并處理后的數(shù)據(jù)保存到MySQL數(shù)據(jù)庫中,在后續(xù)進(jìn)行分析時(shí)可以
隨時(shí)調(diào)用使用。將采集到的數(shù)據(jù)通過柱形圖、折線圖表形式展示,方便用戶查
看和理解相應(yīng)的音樂歌曲信息。
最后對數(shù)據(jù)表進(jìn)行多個(gè)維度的分析后詳細(xì)的闡述。例如,從各歌曲的標(biāo)簽
對其進(jìn)行分析,查看排行榜中跟音樂最緊密相關(guān)的標(biāo)簽。也可以通過獲取歌手
的歌曲沖上排行榜的總數(shù),分析出當(dāng)日受歡迎的歌手有哪些。
2.3關(guān)鍵技術(shù)分析
2.3.1網(wǎng)絡(luò)爬蟲技術(shù)
網(wǎng)絡(luò)爬蟲是指通過程序自動(dòng)抓取互聯(lián)網(wǎng)上的信息的技術(shù),而爬取音樂網(wǎng)站
排行榜數(shù)據(jù)正是網(wǎng)絡(luò)爬蟲技術(shù)的一種應(yīng)用。在這個(gè)場景下,網(wǎng)絡(luò)爬蟲可以自動(dòng)
從目標(biāo)音樂網(wǎng)站上獲取所需數(shù)據(jù),然后進(jìn)行清洗和處理,最終生成規(guī)范化的數(shù)
據(jù)表格。因此,可以說網(wǎng)絡(luò)爬蟲是實(shí)現(xiàn)爬取音樂網(wǎng)站排行榜數(shù)據(jù)的關(guān)鍵技術(shù)之
一。
爬取音樂排行榜數(shù)據(jù)需要使用一種特定的爬蟲技術(shù),以適應(yīng)音樂網(wǎng)站的結(jié)
構(gòu)和數(shù)據(jù)格式,常見的包括:
(1).正則表達(dá)式:使用正則表達(dá)式的模式匹配,可以更準(zhǔn)確地從網(wǎng)頁源代
碼中提取所需的數(shù)據(jù)。
6
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
(2).Xpath:使用XPath語言可以解析網(wǎng)頁中的HTML元素,并定位到所需
的數(shù)據(jù)。它是一種非常靈活的解析方法,可以在網(wǎng)頁結(jié)構(gòu)變化時(shí)動(dòng)態(tài)適應(yīng)。
(3).BeautifulSoup:這是Python的一個(gè)HTML解析庫,可以讓開發(fā)者能夠
快速、方便地從網(wǎng)頁中找到所需的數(shù)據(jù)。
(4).Scrapy:這是Python的一個(gè)高級網(wǎng)絡(luò)爬蟲框架,它可以處理大規(guī)模的
網(wǎng)頁數(shù)據(jù)爬取,并支持分布式爬蟲的部署。除了以上技術(shù)外,還需要一些數(shù)據(jù)
持久化技術(shù),例如將爬取的數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫中,以便于后續(xù)處理和分析。
本次畢業(yè)設(shè)計(jì)選取的爬蟲技術(shù)為正則表達(dá)式和Xpath,以下是對它們的詳細(xì)
闡述以及對應(yīng)的實(shí)現(xiàn)代碼。
(1).正則表達(dá)式
正則表達(dá)式可以對字符、字符串、數(shù)字等不同數(shù)據(jù)類型進(jìn)行匹配,具有很
強(qiáng)的靈活性,而且引擎的實(shí)現(xiàn)方式精簡高效,可以快速地處理大量的數(shù)據(jù),并
且預(yù)定義為一個(gè)模板,以后可以直接調(diào)用,實(shí)現(xiàn)代碼的重用。除了單個(gè)字符匹
配之外,正則表達(dá)式還可以用于處理字符集合,比如匹配一個(gè)含有某些字符的
字符串、匹配郵箱地址等。
本次編程利用正則表達(dá)式完成歌單地址ID值的獲取。先通過正則表達(dá)式的
research方法先將爬取的網(wǎng)頁源代碼截取到存放歌單地址ID值的<script>標(biāo)
簽,縮減源代碼范圍,確保正則表達(dá)式的findall方法能準(zhǔn)確篩選出想要的歌
曲id值,最后再將歌曲id值與網(wǎng)址拼接成歌曲網(wǎng)址后存儲(chǔ)到歌曲網(wǎng)址列表返
回,正則表達(dá)式的實(shí)現(xiàn)代碼如下。
#獲取歌曲地址
defget_music_urls(url):
data=requests.get(url,headers=headers).text
#在源代碼中找到歌曲id的標(biāo)簽
copyrightId_temp=re.search(r'<script>.*?varlistData=(.*?)</script>',data,
re.DOTALL).group(1)
#爬取每個(gè)歌曲的id
copyrightId=re.findall(r'".*?.jpg","copyrightId":"(.*?)","duration"',copyrightId_temp)
music_urls=['/v3/music/song/{}'.format(i)foriincopyrightId]
returnmusic_urls
(2).Xpath
XPath是與HTML、XML完美兼容的語言,用于解析XML及HTML文檔非常方
便,可以直接從屬性或元素中提取所需內(nèi)容而無需分析整個(gè)文檔結(jié)構(gòu)。而且結(jié)
7
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
構(gòu)清晰簡單,易于編寫和學(xué)習(xí),精通XPath語言可以很快地提高數(shù)據(jù)抓取速度。
可以實(shí)現(xiàn)各種復(fù)雜的數(shù)據(jù)提取操作,避免錯(cuò)誤和無用內(nèi)容。
本次編程利用Xpath完成目標(biāo)數(shù)據(jù)的收集。先將爬取的源代碼轉(zhuǎn)換為標(biāo)準(zhǔn)
的html格式,然后通過xpath方法在html格式的源代碼中依次獲取歌名、歌
手、作詞者、作曲者、專輯和音樂標(biāo)簽的信息,并把它們存儲(chǔ)到音樂信息列表
后返回,Xpath的實(shí)現(xiàn)代碼如下。
#獲取歌曲信息
defget_music_info():
foriinrange(len(music_urls)):
data=requests.get(music_urls[i],headers=headers).text
html=etree.HTML(data)
rank=str(i+1)#排名
name=html.xpath('/html/body/div[2]/div[2]/div[2]/h2/text()')[0]#歌名
singer=html.xpath('/html/body/div[2]/div[2]/div[2]/div[1]/a/text()')[0]#歌手
lyricist=
html.xpath('/html/body/div[2]/div[2]/div[2]/div[2]/p[1]/span/text()')[0].replace('作詞:','')#作
詞
composer=
html.xpath('/html/body/div[2]/div[2]/div[2]/div[2]/p[2]/span/text()')[0].replace('作曲:','')#作
曲
album=html.xpath('/html/body/div[2]/div[2]/div[2]/div[2]/p[3]/span/a/text()')[0]#專
輯
label=html.xpath('/html/body/div[2]/div[2]/div[2]/div[2]/p[4]/span/span[1]/text()')[0]
#標(biāo)簽
#將所有數(shù)據(jù)保存到列表中
music_info.append([rank,name,singer,lyricist,composer,album,label])
2.3.2文件存取技術(shù)
網(wǎng)絡(luò)爬蟲的txt文件存儲(chǔ)技術(shù)是指將爬取的數(shù)據(jù)存儲(chǔ)在文本文件中,使用
文本文件存儲(chǔ)方式具有以下優(yōu)點(diǎn):
(1).簡單易用:文本文件格式簡單,存儲(chǔ)和讀取都非常方便,不需要專門
的數(shù)據(jù)庫管理技術(shù)。
(2).高效性:由于文本文件不需要額外的程序或庫支持,因此在處理小型
數(shù)據(jù)時(shí)能夠獲得較高的讀取和寫入速度。
(3).兼容性:文本文件是常見的數(shù)據(jù)格式,可以在不同的操作系統(tǒng)、軟件平
臺(tái)和程序中讀取和使用。
(4).便于共享:爬蟲數(shù)據(jù)存儲(chǔ)在文本文件中,便于共享和傳輸。
8
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
(5).易于維護(hù)和備份:文本文件的結(jié)構(gòu)簡單,易于備份,可以手工編輯和
修改,使數(shù)據(jù)的維護(hù)和管理更加方便。
本次畢業(yè)設(shè)計(jì)存儲(chǔ)咪咕音樂排行榜歌單數(shù)據(jù)所采用的文件存儲(chǔ)技術(shù)就是利
用txt文件存儲(chǔ)技術(shù)。在Python代碼中,以追加的方式打開一個(gè)文件,然后遍
歷已經(jīng)獲取的榜單數(shù)據(jù)信息,利用換行和制表符將其以合適的格式存儲(chǔ)下來,
txt存儲(chǔ)的實(shí)現(xiàn)代碼如下。
#將獲取到的數(shù)據(jù)添加到文件中
defput_info_to_txt(txt_name):
withopen(txt_name,'w+',encoding='utf-8')asf1:
foriinmusic_info:
forjini:
ifj==i[-1]:
f1.write(j+'\n')
else:
f1.write(j+'\t')
2.3.3可視化技術(shù)
可視化技術(shù)(VisualizationTechnology)是指運(yùn)用圖形化手段將數(shù)據(jù)、
信息等抽象概念通過可視化方式展現(xiàn)出來的技術(shù)。它將數(shù)據(jù)、信息轉(zhuǎn)換成直觀、
易于理解和掌握的圖形,讓人們可以通過直觀感受來獲取深層次的數(shù)據(jù)信息,
從而更好地發(fā)現(xiàn)數(shù)據(jù)中隱藏的規(guī)律和趨勢。
可視化技術(shù)可以將爬取到的音樂排行榜歌單數(shù)據(jù)通過各種圖表、地圖、動(dòng)
態(tài)圖等形式來展示,進(jìn)行可視化呈現(xiàn),從而更直觀、生動(dòng)、形象地展示音樂排
行榜中歌手,專輯和歌曲標(biāo)簽等多個(gè)方面的信息。
本次畢業(yè)設(shè)計(jì)使用pycharm工具,實(shí)現(xiàn)對排行榜歌單數(shù)據(jù)的可視化技術(shù)。
其中,用pandas庫讀取存儲(chǔ)在txt文件的歌單數(shù)據(jù),用matplotlib庫和
pycharts庫將爬取的數(shù)據(jù)進(jìn)行圖表可視化展示。
選擇的展示圖表分別是詞云圖、餅圖和柱狀圖,以下是對這些圖表功能特
點(diǎn)的介紹,這也是為什么要展現(xiàn)為這幾種圖的原因。
(1).詞云圖
詞云圖是一種基于文字的可視化技術(shù),它將文本信息通過顏色、字體大小、
重心標(biāo)示等視覺手段展現(xiàn)出來,從而更加直觀地呈現(xiàn)出關(guān)鍵字的出現(xiàn)頻率、重
要程度和相關(guān)度等信息。
9
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
詞云圖直觀而易于理解,不需要專業(yè)的統(tǒng)計(jì)知識(shí),可以快速地將文字?jǐn)?shù)據(jù)
變?yōu)橐曈X化的信息,加速了對數(shù)據(jù)的分析過程。而且有多種形式可以選擇,如
基于形狀的詞云圖、基于位置的詞云圖、基于顏色的詞云圖等??梢愿鶕?jù)不同
的數(shù)據(jù)類型和展示目標(biāo)進(jìn)行調(diào)整,提高了可視化的靈活性。
同時(shí)也能夠更加有效地傳遞信息,而且傳遞的信息準(zhǔn)確性和精度較高,具
有較高的可靠性。詞云圖還能夠展示單詞之間的相關(guān)性,使得用戶可以深入的
理解數(shù)據(jù)背后的信息。
(2).餅圖
餅圖是一種基于數(shù)據(jù)的可視化技術(shù),將數(shù)據(jù)分割為幾塊“餅狀”區(qū)域,并
用不同的顏色或其他可視化方式來區(qū)分每個(gè)部分的大小或重要程度。
餅圖易于理解和使用,而且不需要專業(yè)的統(tǒng)計(jì)和計(jì)算知識(shí)。餅圖可以非常
清楚地顯示不同部分的比例及其在整體中的占比情況,使得人們可直觀感受到
每個(gè)部分在整體中的重要性。可以通過多種色彩、圖案等方式來區(qū)分不同部分,
使圖表顯示的信息更具吸引力??梢杂糜诒容^個(gè)體與總體的比例,比較不同時(shí)
間段或不同地區(qū)的數(shù)據(jù)差異,有助于更快速準(zhǔn)確地觀察和分析數(shù)據(jù)。
(3).柱狀圖
柱狀圖是一種基于數(shù)據(jù)的可視化技術(shù),通過使用柱形展示每個(gè)數(shù)據(jù)的大小、
高度或長度。
柱狀圖可以幫助人們更直觀地理解數(shù)據(jù),尤其是對于非常大的數(shù)據(jù)集而言。
可以顯示不同組數(shù)據(jù)的差異。柱狀圖也可以通過交互來幫助用戶更深入地探索
數(shù)據(jù)。例如,用戶可以通過鼠標(biāo)懸停在某個(gè)柱子上來獲得詳細(xì)信息。
比如,可以使用折線圖或柱狀圖展示不同歌曲或不同曲風(fēng)的排名變化,使
用地圖可以展示不同地域的音樂受眾分布,使用動(dòng)態(tài)圖可以展示不同時(shí)間段內(nèi)
的音樂排行榜變化趨勢。
除此之外,可視化技術(shù)還可以讓數(shù)據(jù)更加生動(dòng)、具體,有助于人們更好地
理解、分析和處理數(shù)據(jù),更快速、全面地獲取數(shù)據(jù)背后的規(guī)律和趨勢。因此,
在爬取咪咕音樂排行榜數(shù)據(jù)時(shí),將抓取到的數(shù)據(jù)進(jìn)行可視化呈現(xiàn),將非常有益
于數(shù)據(jù)的分析和應(yīng)用。
3數(shù)據(jù)采集
3.1采集頁面分析
首先通過谷歌瀏覽器搜索咪咕音樂的官方網(wǎng)頁,進(jìn)入官網(wǎng)后找到并切換到
10
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
音樂榜單,從這獲取咪咕尖叫榜和咪咕特色榜下拉欄的所有音樂排行榜網(wǎng)址,示
例圖如圖3-1。
圖3-1咪咕音樂排行榜榜單圖
然后,選取尖叫新歌榜進(jìn)行進(jìn)行頁面分析,尖叫新歌榜的URL為:
/v3/music/top/jianjiao_hotsong。點(diǎn)擊頁面下方的分
頁按鈕,同時(shí)觀察URL,發(fā)現(xiàn)URL沒有變化,示例圖如圖3-2,3-3。
圖3-2尖叫新歌榜第1頁圖
11
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
圖3-3尖叫新歌榜第2頁圖
按F12調(diào)出開發(fā)者工具,選擇瀏覽器控制臺(tái)的Network面板,然后刷新頁
面,當(dāng)請求頁面刷新出尖叫新歌榜的請求信息時(shí),選擇該請求信息,將標(biāo)簽定
位到Headers標(biāo)頭,分析尖叫新歌榜的請求信息,如圖3-4。
圖3-4開發(fā)者工具圖
通過分析,得到該網(wǎng)址的請求方式是get請求。將瀏覽器控制臺(tái)切換到
Console面板,準(zhǔn)備分析網(wǎng)頁是靜態(tài)網(wǎng)頁還是動(dòng)態(tài)網(wǎng)頁。
在命令行中輸入“alert(document.lastModified);”,彈出窗口會(huì)記錄時(shí)
間,隨著多次刷新頁面,如果時(shí)間也會(huì)不斷變化的話,則證明該網(wǎng)頁是動(dòng)態(tài)網(wǎng)
12
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
頁,示例圖如圖3-5,3-6。
圖3-5網(wǎng)站彈出時(shí)間1圖
圖3-6網(wǎng)站彈出時(shí)間2圖
為了進(jìn)一步爬取動(dòng)態(tài)網(wǎng)頁數(shù)據(jù),先選擇點(diǎn)開幾個(gè)歌曲,分析他們的網(wǎng)址,
經(jīng)對比發(fā)現(xiàn)他們只有最后一個(gè)路徑有偏差,示例圖如圖3-7,3-8。
13
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
圖3-7歌單網(wǎng)址1圖
圖3-8歌單網(wǎng)址2圖
根據(jù)經(jīng)驗(yàn)推測,該值應(yīng)該是歌單的網(wǎng)址路徑ID值。經(jīng)網(wǎng)頁爬取排查發(fā)現(xiàn),
只有網(wǎng)頁源代碼<scripts>標(biāo)簽下面所有歌曲的路徑ID值是可獲取到的,示例
圖如圖3-9,3-10。驗(yàn)證推測后,通過這種方式爬取所有歌單地址。
14
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
圖3-9網(wǎng)頁源代碼的歌曲ID值圖
圖3-10經(jīng)爬取驗(yàn)證的歌曲ID值圖
總的來說,在對咪咕音樂排行榜的網(wǎng)站進(jìn)行頁面分析時(shí),也遇到了不少難
題,比如爬蟲知識(shí)儲(chǔ)備的缺漏,不知道如何分辨網(wǎng)頁動(dòng)態(tài)與靜態(tài),在確認(rèn)歌曲
的路徑ID時(shí),尋找那個(gè)ID值才是所需要的。不過,最終所有的難題都通過查
詢大量的參考資料得到了有效的解決。
3.2字段分析
進(jìn)入咪咕音樂尖叫新歌榜的其中一個(gè)歌單網(wǎng)址,按F12調(diào)出開發(fā)者工具,
選擇瀏覽器控制臺(tái)的Element面板,通過資源定位符,找到歌單信息集中的位
15
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
置,然后分析信息字段爬取的方式,示例圖如圖3-11。
圖3-11歌曲字段信息圖
咪咕音樂排行榜的歌曲字段分析相對簡單,沒有什么問題,只要確認(rèn)好歌
單信息的源代碼解析方式就行。
3.3編程實(shí)現(xiàn)
對網(wǎng)站進(jìn)行采集頁面和頁面字段等細(xì)節(jié)的分析后,準(zhǔn)備實(shí)現(xiàn)編程需求,完
成數(shù)據(jù)采集功能。首先導(dǎo)入爬取網(wǎng)站所需要的庫,為爬取網(wǎng)站提供相應(yīng)方法。
#導(dǎo)入庫
importrequests
fromlxmlimportetree
importre
然后設(shè)置請求頭,模擬瀏覽器訪問網(wǎng)站。
#設(shè)置請求頭
headers={
'User-Agent':'User-Agent:Mozilla/5.0(WindowsNT6.1)AppleWebKit/537.36(KHTML,
likeGecko)Chrome/63.0.3239.132Safari/537.36'
}
配置好爬蟲的環(huán)境后,實(shí)現(xiàn)數(shù)據(jù)采集需求,完成咪咕音樂各榜單的歌單信
息爬取,詳細(xì)操作代碼如下。
importrequests
fromlxmlimportetree
16
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
importre
headers={
'User-Agent':'User-Agent:Mozilla/5.0(WindowsNT6.1)AppleWebKit/537.36(KHTML,
likeGecko)Chrome/63.0.3239.132Safari/537.36'
}
#各榜單網(wǎng)頁url
li1=['jianjiao_newsong','jianjiao_hotsong','jianjiao_original','movies','mainland','hktw',
'eur_usa','jpn_kor','coloring','ktv','network']
bangdang_urls=['/v3/music/top/{}'.format(i)foriinli1]
li2=['新歌榜','熱歌榜','原創(chuàng)榜','影視榜','內(nèi)地榜','港臺(tái)榜','歐美榜','日韓榜','彩鈴
榜','KTV榜','網(wǎng)絡(luò)榜']
txt_name=['{}數(shù)據(jù).txt'.format(i)foriinli2]
#獲取歌曲地址
defget_music_urls(url):
data=requests.get(url,headers=headers).text
#在源代碼中找到歌曲id的標(biāo)簽
copyrightId_temp=re.search(r'<script>.*?varlistData=(.*?)</script>',data,
re.DOTALL).group(1)
#爬取每個(gè)歌曲的id
copyrightId=re.findall(r'".*?.jpg","copyrightId":"(.*?)","duration"',copyrightId_temp)
music_urls=['/v3/music/song/{}'.format(i)foriincopyrightId]
returnmusic_urls
#獲取歌曲信息
defget_music_info():
foriinrange(len(music_urls)):
data=requests.get(music_urls[i],headers=headers).text
html=etree.HTML(data)
rank=str(i+1)#排名
name=html.xpath('/html/body/div[2]/div[2]/div[2]/h2/text()')[0]#歌名
singer=html.xpath('/html/body/div[2]/div[2]/div[2]/div[1]/a/text()')[0]#歌手
lyricist=
html.xpath('/html/body/div[2]/div[2]/div[2]/div[2]/p[1]/span/text()')[0].replace('作詞:','')#
作詞
composer=
html.xpath('/html/body/div[2]/div[2]/div[2]/div[2]/p[2]/span/text()')[0].replace('作曲:','')#
作曲
album=html.xpath('/html/body/div[2]/div[2]/div[2]/div[2]/p[3]/span/a/text()')[0]#專
輯
label=html.xpath('/html/body/div[2]/div[2]/div[2]/div[2]/p[4]/span/span[1]/text()')[0]
#標(biāo)簽
#將所有數(shù)據(jù)保存到列表中
17
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
music_info.append([rank,name,singer,lyricist,composer,album,label])
#將獲取到的數(shù)據(jù)添加到文件中
defput_info_to_txt(txt_name):
withopen(txt_name,'w+',encoding='utf-8')asf1:
foriinmusic_info:
forjini:
ifj==i[-1]:
f1.write(j+'\n')
else:
f1.write(j+'\t')
if__name__=='__main__':
foriinrange(len(bangdang_urls)):
music_urls=get_music_urls(bangdang_urls[i])
music_info=[['排名','歌名','歌手','作詞','作曲','專輯','標(biāo)簽']]
get_music_info()
print(music_info[0:2])
put_info_to_txt(txt_name[i])
4數(shù)據(jù)清洗與處理
在爬取收集大量的數(shù)據(jù)信息后,需要對數(shù)據(jù)進(jìn)行預(yù)處理,也就是數(shù)據(jù)清洗
和檢查,確定爬取的數(shù)據(jù)是否存在無效值,并要保證數(shù)據(jù)的一致性。這個(gè)對于
信息質(zhì)量的評估是一項(xiàng)很重要的任務(wù)。不僅如此,還要將數(shù)據(jù)進(jìn)行有理化和有
序化,這樣處理后的數(shù)據(jù)才能在調(diào)用共享過程中方便很多開發(fā)人員對數(shù)據(jù)信息
的使用。
本次畢業(yè)設(shè)計(jì)中通過JupyterNotebook軟件進(jìn)行數(shù)據(jù)清洗,將爬下來的咪
咕音樂排行榜的歌曲數(shù)據(jù)和網(wǎng)頁原數(shù)據(jù)進(jìn)行比對,檢查內(nèi)容是否存在空值、錯(cuò)
值,還有數(shù)據(jù)的位置是否正確,并對不同問題的數(shù)據(jù)要進(jìn)行不同的處理。
4.1數(shù)據(jù)清洗
利用JupyterNotebook從存儲(chǔ)的txt文件中讀取數(shù)據(jù),準(zhǔn)備進(jìn)行數(shù)據(jù)清洗,
核心參考代碼如下:
importpandasaspd
df=pd.read_csv(r'D:\pycharm\文件保存位置\python畢業(yè)設(shè)計(jì)\內(nèi)地榜數(shù)
據(jù).txt',sep='\t',engine='python',encoding='utf_8_sig')
18
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
df.head(10)
運(yùn)行核心代碼生成的數(shù)據(jù)如圖4-1:
圖4-1數(shù)據(jù)清洗準(zhǔn)備頁面圖
然后使用duplicated()方法驗(yàn)證數(shù)據(jù)是否存在重復(fù)值,參考示例如圖4-2。
圖4-2數(shù)據(jù)重復(fù)值查驗(yàn)圖
19
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
經(jīng)過查驗(yàn),發(fā)現(xiàn)數(shù)據(jù)并沒有重復(fù)值。接下來,使用isnull()方法判斷數(shù)
據(jù)是否存在缺失值,參考示例如圖4-3。
圖4-3數(shù)據(jù)缺失值查驗(yàn)圖
經(jīng)過數(shù)據(jù)查詢后發(fā)現(xiàn)數(shù)據(jù)也沒有存在缺失值,以同樣的方法,去處理其他
排行榜的數(shù)據(jù)。經(jīng)驗(yàn)證,內(nèi)地榜和其他排行榜的數(shù)據(jù)沒有漏洞、錯(cuò)亂或者空值
等問題。
接下來,根據(jù)需要,將有效數(shù)據(jù)進(jìn)行一致的統(tǒng)一規(guī)劃,并且去掉不需要的
行和列數(shù)據(jù),以避免冗余數(shù)據(jù)的影響,最終的數(shù)據(jù)清洗后的頁面效果如圖4-4
所示。
20
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
圖4-4內(nèi)地榜數(shù)據(jù)清洗完成界面圖
保留需要的行列數(shù)據(jù),整理為原網(wǎng)頁格式存入txt文件中,以便留存后續(xù)
作為統(tǒng)計(jì)分析、可視化使用。
4.2數(shù)據(jù)儲(chǔ)存
數(shù)據(jù)儲(chǔ)存的方式方法有很多,可以直接用記事本格式儲(chǔ)存(txt),也可以
用其他文件的形式儲(chǔ)存csv、excel、json等,但是以上方法保存的數(shù)據(jù)體量都
普遍不大。如果需要儲(chǔ)存大量的數(shù)據(jù)信息就需要用到數(shù)據(jù)庫,數(shù)據(jù)庫分為關(guān)系
型和非關(guān)系型數(shù)據(jù)庫。關(guān)系型數(shù)據(jù)庫比較典型的有MySQL和Oracle等,非關(guān)系
型數(shù)據(jù)庫等以鍵值對形式儲(chǔ)存數(shù)據(jù),其中的代表有Mongodb、Redis等。
本次畢業(yè)設(shè)計(jì)用到的是txt、MySQL來實(shí)現(xiàn)數(shù)據(jù)儲(chǔ)存操作。首先,使用Python
的文件寫入方法將數(shù)據(jù)寫入到txt,實(shí)現(xiàn)代碼如下。
#將獲取到的數(shù)據(jù)添加到文件中
defput_info_to_txt(txt_name):
withopen(txt_name,'w+',encoding='utf-8')asf1:
foriinmusic_info:
forjini:
ifj==i[-1]:
f1.write(j+'\n')
else:
f1.write(j+'\t')
然后,打開VMwareWorkstationPr虛擬機(jī)啟動(dòng)Linux環(huán)境,將txt文件數(shù)
據(jù)上傳到Linux系統(tǒng)后將其導(dǎo)入到MySQL。最后進(jìn)行數(shù)據(jù)檢驗(yàn),如圖4-5所示。
21
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
圖4-5數(shù)據(jù)存儲(chǔ)到MySQL檢驗(yàn)頁面圖
數(shù)據(jù)存儲(chǔ)的實(shí)現(xiàn)需要考慮較多的細(xì)節(jié),比如在遍歷歌曲列表信息時(shí),要將
每行的歌單信息以一定的格式分隔,并在每行數(shù)據(jù)讀取的結(jié)尾進(jìn)行換行,在數(shù)
據(jù)儲(chǔ)存完成后,一定要檢驗(yàn)數(shù)據(jù)是否存儲(chǔ)成功。
4.3編程實(shí)現(xiàn)
創(chuàng)建數(shù)據(jù)庫,用于存放數(shù)據(jù)表,實(shí)現(xiàn)代碼與結(jié)果如圖4-6。
圖4-6創(chuàng)建數(shù)據(jù)庫圖
創(chuàng)建數(shù)據(jù)表,構(gòu)建存儲(chǔ)數(shù)據(jù)的結(jié)構(gòu),實(shí)現(xiàn)代碼與結(jié)果如圖4-7。
圖4-7創(chuàng)建數(shù)據(jù)表圖
將存儲(chǔ)在本地txt文件的歌單信息上傳到Linux系統(tǒng)后,將其導(dǎo)入數(shù)據(jù)表
中,實(shí)現(xiàn)代碼與結(jié)果如圖4-8。
圖4-8導(dǎo)入文件數(shù)據(jù)到數(shù)據(jù)表圖
22
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
通過查詢數(shù)據(jù)表驗(yàn)證存入數(shù)據(jù)是否正確,實(shí)現(xiàn)代碼與結(jié)果如圖4-9。
圖4-9數(shù)據(jù)驗(yàn)證圖
之所以將爬取并存儲(chǔ)到txt的文件數(shù)據(jù)轉(zhuǎn)存到存儲(chǔ)到MySQL數(shù)據(jù)庫,有以
下幾個(gè)原因:
(1).數(shù)據(jù)庫的數(shù)據(jù)結(jié)構(gòu)更為清晰和規(guī)范,可以更方便地進(jìn)行數(shù)據(jù)管理和查
詢。
(2).數(shù)據(jù)庫可以進(jìn)行事務(wù)處理,可以保證多個(gè)操作的一致性和完整性。
(3).數(shù)據(jù)庫可以進(jìn)行并發(fā)處理和多線程操作,可以提高數(shù)據(jù)處理的效率。
(4).數(shù)據(jù)庫能夠?qū)?shù)據(jù)進(jìn)行備份和恢復(fù),可以提高數(shù)據(jù)的安全性。
(5).數(shù)據(jù)庫還可以進(jìn)行數(shù)據(jù)的分析和處理,為業(yè)務(wù)提供更多的可能性。
綜上所述,將爬取數(shù)據(jù)存儲(chǔ)到MySQL數(shù)據(jù)庫更加靈活、高效、安全和便捷,
是更為理想的方式。
5數(shù)據(jù)統(tǒng)計(jì)與分析
5.1數(shù)據(jù)準(zhǔn)備
因?yàn)镴upyterNotebook操作簡單方便,本次畢業(yè)設(shè)計(jì)選擇Jupyter
Notebook軟件進(jìn)行數(shù)據(jù)準(zhǔn)備。首先導(dǎo)入相關(guān)庫,使用pandas存儲(chǔ)在txt文件的
數(shù)據(jù),選取部分字段,讀取前十條數(shù)據(jù)作為作為數(shù)據(jù)準(zhǔn)備,核心實(shí)現(xiàn)代碼如下,
數(shù)據(jù)準(zhǔn)備結(jié)果如圖5-1。
importpandasaspd
df=pd.read_csv(r'D:\pycharm\文件保存位置\python畢業(yè)設(shè)計(jì)\內(nèi)地榜數(shù)
23
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)
據(jù).txt',sep='\t',engine='python',encoding='utf_8_sig')
df.head(10)
圖5-1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年紡織企業(yè)間產(chǎn)品買賣合同
- 2024年電動(dòng)車零部件制造與技術(shù)許可合同3篇
- 2024簡易工程裝修合同
- 2025年度環(huán)保設(shè)施維護(hù)與升級補(bǔ)充合同模板3篇
- 專業(yè)化海運(yùn)出口物流合作合同(2024年版)版
- 2024樁基破樁頭作業(yè)服務(wù)協(xié)議版B版
- 2024年旅游業(yè)務(wù)合作合同詳細(xì)條款
- 2024年水資源開發(fā)與利用合作協(xié)議
- 2024皮草產(chǎn)品定制加工及銷售合作協(xié)議3篇
- 2024青島裝修工程糾紛解決合同范本3篇
- 2024年認(rèn)證行業(yè)法律法規(guī)及認(rèn)證基礎(chǔ)知識(shí)
- SCA自動(dòng)涂膠系統(tǒng)培訓(xùn)講義
- 食材配送后續(xù)服務(wù)方案
- LEC法取值標(biāo)準(zhǔn)對照表
- 鑄造工廠設(shè)備管理(共21頁)
- 華中數(shù)控車床編程及操作
- 農(nóng)產(chǎn)品收購臺(tái)賬(登記經(jīng)營單位及個(gè)體經(jīng)營者投售的農(nóng)產(chǎn)品
- 分紅保險(xiǎn)精算規(guī)定
- 名詞性從句引導(dǎo)詞表格
- 3、起重工、焊工、電工安全技術(shù)交底
- 水稻幼穗分化八個(gè)時(shí)期的劃分表
評論
0/150
提交評論