基于Python的下廚房美食網(wǎng)站數(shù)據(jù)采集與分析_第1頁
基于Python的下廚房美食網(wǎng)站數(shù)據(jù)采集與分析_第2頁
基于Python的下廚房美食網(wǎng)站數(shù)據(jù)采集與分析_第3頁
基于Python的下廚房美食網(wǎng)站數(shù)據(jù)采集與分析_第4頁
基于Python的下廚房美食網(wǎng)站數(shù)據(jù)采集與分析_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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畢業(yè)設(shè)計(jì)背景1

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

1.2.1Python簡介1

1.2.2Anaconda簡介2

1.2.3Jypyternotebook簡介2

1.2.4Python第三方庫簡介3

2需求分析3

2.1可行性需求分析3

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

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

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

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

2.3.3可視化技術(shù)5

3下廚房網(wǎng)數(shù)據(jù)采集6

3.1采集頁面分析6

3.2字段分析8

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

3.3.1導(dǎo)入所需庫10

3.3.2頁面解析10

3.3.3數(shù)據(jù)獲取10

3.3.4網(wǎng)頁數(shù)據(jù)存儲(chǔ)11

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

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

4.1.1數(shù)據(jù)預(yù)覽12

4.1.2菜名重復(fù)數(shù)據(jù)去除13

4.1.3無效值、缺失值處理13

I

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

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

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

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

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

5.2.1各菜系菜譜數(shù)量占比餅圖16

5.2.2最受歡迎的十二道菜折線圖17

5.2.3菜譜評分分布玫瑰圖18

5.2.4作者發(fā)布菜品數(shù)量及平均分柱狀圖19

5.2.5用料詞云圖20

5.3綜述20

6小結(jié)21

參考資料22

II

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

基于Python的下廚房美食網(wǎng)站數(shù)據(jù)采集與分析

1引言

當(dāng)今世界未有之大變局,Internet成為21世紀(jì)備受關(guān)注的行業(yè)之一,它的

高速發(fā)展和在全球的普及應(yīng)用正在給人類生活帶來革命性變化,正是我們這一

代年輕人應(yīng)該抓住的時(shí)機(jī)和機(jī)會(huì)。衣食住行各個(gè)方面產(chǎn)生的海量數(shù)據(jù)之前被人

忽略,時(shí)代的發(fā)展讓人們知道了數(shù)據(jù)分析的重要性,通過巨大的信息網(wǎng)絡(luò)中發(fā)

現(xiàn)的蛛絲馬跡卻能給人們帶來極大的便利。

1.1畢業(yè)設(shè)計(jì)背景

一日三餐維持著最基本的生存,而對于中國這個(gè)14億人口的大國,一方山

水養(yǎng)一方人,不同的飲食習(xí)慣也由此產(chǎn)生。前一陣子的疫情原因使得人們外出

活動(dòng)變少,對于吃來說依舊是不馬虎,在各種格式的美食分享網(wǎng)站和app中尋

找自己的食譜。

對于一家美食網(wǎng)站而言,菜譜種類以及數(shù)量質(zhì)量直接決定了用戶數(shù)量,我們

需要對網(wǎng)頁進(jìn)行解析,然后通過Python爬蟲的手段批量獲取我們想要的分類下

的內(nèi)容。我的畢業(yè)設(shè)計(jì)就是通過分析下廚房網(wǎng)站,然后爬取該網(wǎng)站下一欄下的分

類菜譜數(shù)據(jù),對爬取下來的數(shù)據(jù)進(jìn)行預(yù)處理、分析、可視化等步驟。繁雜的數(shù)據(jù)

經(jīng)過清洗加分析后通過圖片展示,網(wǎng)站可以參考數(shù)據(jù)制定策略優(yōu)化內(nèi)容,大家就

可以清楚知道哪些菜譜是最近的熱門菜譜,哪些調(diào)料和食材用的多,購買相應(yīng)

的材料跟上熱潮,有哪些優(yōu)秀作者值得關(guān)注。我的畢業(yè)設(shè)計(jì)包含數(shù)據(jù)爬取、清

洗處理、儲(chǔ)存、可視化分析。

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

1.2.1Python簡介

Python由荷蘭數(shù)學(xué)和計(jì)算機(jī)科學(xué)研究學(xué)會(huì)的吉多·范羅蘇姆于1990年代

初設(shè)計(jì),作為一門叫做ABC語言的替代品。Python語言具有簡單、易學(xué)、易讀、

易維護(hù)等特點(diǎn),被廣泛應(yīng)用于Web開發(fā)、數(shù)據(jù)分析、機(jī)器學(xué)習(xí)、人工智能、科

學(xué)計(jì)算等領(lǐng)域。作為一種解釋性語言,Python不需要預(yù)編譯,在運(yùn)行時(shí)需要解

釋器逐行執(zhí)行程序。Python語言的語法簡潔明了,使用縮進(jìn)代替了大括號(hào)來表

1

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

示程序的塊結(jié)構(gòu),這也使得代碼易讀性較高。

Python語言擁有大量的標(biāo)準(zhǔn)庫和第三方庫,包含了各種常用工具和功能模

塊,例如文件操作、網(wǎng)絡(luò)通信、數(shù)據(jù)處理、GUI編程、圖像處理、文本處理、機(jī)

器學(xué)習(xí)、深度學(xué)習(xí)、科學(xué)計(jì)算等。這些庫可以幫助開發(fā)者更加便捷地實(shí)現(xiàn)代碼

編寫,提高了生產(chǎn)效率。Python提供了高效的高級(jí)數(shù)據(jù)結(jié)構(gòu),還能簡單有效地

面向?qū)ο缶幊獭?/p>

除此之外,Python還有豐富的社區(qū)支持,Python社區(qū)中有眾多開源的工具

和框架,例如Django、Flask、PyTorch、Tensorflow、Numpy、Pandas等等,

這些開源工具和框架為Python生態(tài)系統(tǒng)的發(fā)展提供了強(qiáng)大的支持和推動(dòng)。隨著

版本的不斷更新和語言新功能的添加,Python逐漸被用于獨(dú)立的、大型畢業(yè)設(shè)

計(jì)的開發(fā)。

1.2.2Anaconda簡介

Anaconda中文直譯過來就是大蟒蛇,它是一個(gè)開源的python發(fā)行版本,包

含了conda、python還有一大堆安裝好的工具包,Anaconda主要包含以下四個(gè)

部分:

Conda:是Anaconda的包管理和環(huán)境管理工具。它可以方便地創(chuàng)建、刪除

和切換不同的Python環(huán)境,并可以在不同的Python環(huán)境中安裝和管理不同的

包和庫。

Python:Anaconda自帶了Python解釋器,用戶可以直接在Anaconda環(huán)境

中開發(fā)和運(yùn)行Python程序。

Packages:Anaconda自帶了大量的Python科學(xué)計(jì)算和數(shù)據(jù)分析的包和庫,

例如Numpy、Scipy、Pandas、Matplotlib、Scikit-learn等等。這些包和庫可

以直接在Anaconda環(huán)境中使用,無需額外安裝。

GUI:Anaconda還提供了一個(gè)名為AnacondaNavigator的圖形化界面,可

以方便地管理和使用環(huán)境、包和庫。

1.2.3Jypyternotebook簡介

Jupyternotebook是一種基于瀏覽器的工具。如果你想使用Python在

JupyterNotebook中進(jìn)行編程,首先需要在本地安裝Python和Jupyter

Notebook環(huán)境。一般來說,你可以通過安裝一個(gè)Python發(fā)行版,例如Anaconda

來方便地獲得這兩者。安裝好后,你可以在終端中打開JupyterNotebook,它

會(huì)自動(dòng)在瀏覽器中開啟一個(gè)網(wǎng)頁,顯示Notebook主頁。

2

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

在Notebook中,每個(gè)Notebook都由一系列單元格組成。這些單元格可以

包含代碼、Markdown文本或者Raw文本。你可以在單元格中編寫Python代碼,

逐個(gè)運(yùn)行代碼單元格并獲像一個(gè)筆記本它將實(shí)時(shí)代碼、說明文本、數(shù)學(xué)方程、

可視化內(nèi)容結(jié)合起來,放在一個(gè)可共享的文檔中而且它支持Markdown標(biāo)記語言,

在瀏覽器編輯界面可以很方便的添加注釋。在jypyternotebook執(zhí)行代碼的時(shí)

候?qū)τ谧⑨屝晕谋静⒉粫?huì)執(zhí)行,極大的方便了老師教學(xué),或者開發(fā)者講解畢業(yè)設(shè)

計(jì)。

1.2.4Python第三方庫簡介

Python第三方庫在使用前要先進(jìn)行安裝。

requests:requests庫建立在Python語言的urllib3庫基礎(chǔ)上,更為簡潔,

是一個(gè)處理HTTP請求的第三方庫,它的最大優(yōu)點(diǎn)是程序編寫過程更接近URL訪

問過程。

Csv:csv屬于python中的內(nèi)置模塊,它能夠讀取csv格式的文件或者將數(shù)

據(jù)存入到csv表格中,csv是表格和數(shù)據(jù)庫中常見的文件操作格式。

NumPy庫是Python數(shù)據(jù)分析的基礎(chǔ),用于處理多維數(shù)組,可以存儲(chǔ)和處理大

型矩陣,它還提供了高級(jí)的數(shù)值編程工具,計(jì)算比python提供的列表結(jié)構(gòu)要高

效的多。

pandas:基于numpy擴(kuò)展的一個(gè)重要第三方庫,它是為了解決數(shù)據(jù)分析任

務(wù)而創(chuàng)建的。pandas提供了一批標(biāo)準(zhǔn)的數(shù)據(jù)模型和大量快速便捷出來數(shù)據(jù)的函

數(shù)和方法,提供了高效的操作大型數(shù)據(jù)集所需要的工具。

matplotlib:繪圖庫,主要是偏向于二維繪圖包括折線圖、條形圖、扇形圖、

散點(diǎn)圖、直方圖等等。

Pyecharts:將python與echarts結(jié)合的強(qiáng)大的數(shù)據(jù)可視化工具。使用

pyecharts可以生成獨(dú)立的網(wǎng)頁,也可以在flask,Django中集成使用。

2需求分析

2.1可行性需求分析

1、技術(shù)可行性

Python是面向?qū)ο笳Z言中的一門通俗易懂的計(jì)算機(jī)編程語言,本次畢業(yè)設(shè)

計(jì)中使用Python編寫程序來實(shí)現(xiàn)數(shù)據(jù)獲取,數(shù)據(jù)清洗預(yù)處理,數(shù)據(jù)可視化。在數(shù)

據(jù)獲取的過程中通過抓包分析發(fā)現(xiàn)下廚房網(wǎng)站編寫代碼得到網(wǎng)頁面數(shù)據(jù)的返回

3

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

值。隨后將爬取出來的原始數(shù)據(jù)暫時(shí)以csv格式儲(chǔ)存起來,隨后用python自帶

的庫來實(shí)現(xiàn)數(shù)據(jù)可視化的內(nèi)容。

以上為此次畢業(yè)設(shè)計(jì)的技術(shù)可行性,我也將在后續(xù)的工作中將所有的步驟

實(shí)現(xiàn)到位,保證數(shù)據(jù)的準(zhǔn)確性和安全性。

2、畢業(yè)設(shè)計(jì)可行性

民以食為天,本次畢業(yè)設(shè)計(jì)通過采集比較美食社區(qū)中位居前列的下廚房網(wǎng)

站來分析大眾喜愛的美食。我們也將從菜品種類、評分及菜系等方面對其進(jìn)行

剖析,分析出有價(jià)值的信息,將其可視化最后根據(jù)結(jié)果得出結(jié)論。

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

本次畢業(yè)設(shè)計(jì)的數(shù)據(jù)集的來源是下廚房網(wǎng)站,是通過python爬取下廚房網(wǎng)

站部分分欄下不同菜系下的信息。數(shù)據(jù)清洗后共833條記錄,爬取完成后盡可能

的檢查數(shù)據(jù)的準(zhǔn)確性,確定爬取出來的數(shù)據(jù)無誤。

分析下廚房網(wǎng)站網(wǎng)頁信息,我們需要爬取的參數(shù)有菜品、鏈接、用料、評分、

作者、菜系等數(shù)據(jù),在對原始數(shù)據(jù)進(jìn)行預(yù)處理后我們會(huì)對其數(shù)據(jù)進(jìn)行分析。例如,

從菜系的數(shù)量對其進(jìn)行分析對比,查看各個(gè)菜系有多少,大眾更偏好的是哪一種,

通過菜品平均分占比來網(wǎng)站可以參考內(nèi)容要做哪些方面的調(diào)整。通過最近7天

內(nèi)做過菜品人數(shù)字段對比來獲取最近大家都在做哪些菜,根據(jù)用料繪制詞云圖

來看哪些調(diào)料和食材用的多。又或者想要關(guān)注一些優(yōu)質(zhì)作者分享的菜品,那么我

們就可以根據(jù)作者分組來統(tǒng)計(jì)每個(gè)作者的菜品數(shù)量,和菜品評分的平均分來分

析出哪些是值得關(guān)注的作者。

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

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

上網(wǎng)時(shí)都會(huì)遇到需要緩存在本地的數(shù)據(jù),當(dāng)數(shù)量比較小的時(shí)候我們可以自

己采取手動(dòng)下載的方式去獲得想要的數(shù)據(jù),不過在我們的大數(shù)據(jù)領(lǐng)域接觸到的

數(shù)據(jù)量是非常大的。如果我們需要獲取的數(shù)據(jù)量極為龐大,這個(gè)時(shí)候一個(gè)一個(gè)

去點(diǎn)擊下載獲取數(shù)據(jù)無疑是很麻煩的,能不能有一種辦法可以讓電腦幫我點(diǎn)擊

下載,幫我收集資料呢。

網(wǎng)絡(luò)爬蟲就可以幫助我們,網(wǎng)絡(luò)爬蟲也被人們叫做網(wǎng)絡(luò)機(jī)器人,顧名思義就

是只需要編寫程序或者一些小腳本來控制爬蟲自動(dòng)的瀏覽互聯(lián)網(wǎng)并且對想要的

目標(biāo)進(jìn)行精準(zhǔn)的數(shù)據(jù)的采集。網(wǎng)絡(luò)爬蟲按照系統(tǒng)結(jié)構(gòu)和實(shí)現(xiàn)技術(shù),大致可以分

4

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

為以下幾種類型:通用網(wǎng)絡(luò)爬蟲(GeneralPurposeWebCrawler)、聚焦網(wǎng)絡(luò)

爬蟲(FocusedWebCrawler)、增量式網(wǎng)絡(luò)爬蟲(IncrementalWebCrawler)、

深層網(wǎng)絡(luò)爬蟲(DeepWebCrawler)。實(shí)際的網(wǎng)絡(luò)爬蟲系統(tǒng)通常是幾種爬蟲技術(shù)

相結(jié)合實(shí)現(xiàn)的。

在大家的印象中常常將普通的網(wǎng)絡(luò)爬蟲與黑客混為一談,其實(shí)二者之間有

很大的區(qū)別。黑客屬于違反法律肆意竊取個(gè)人或者組織內(nèi)有價(jià)值的信息以此獲

利,而爬蟲就是一個(gè)探測機(jī)器,它的基本操作就是模擬人的行為去各個(gè)網(wǎng)站溜達(dá),

點(diǎn)點(diǎn)按鈕,查查數(shù)據(jù),或者把看到的信息背回來。簡單來說,它包含三個(gè)步驟:

采集信息、數(shù)據(jù)存儲(chǔ)和信息提取。別有用心之人就會(huì)利用調(diào)整爬蟲的訪問頻率,

對于被訪問的網(wǎng)站而言會(huì)增加其負(fù)荷導(dǎo)致網(wǎng)址奔潰。

由此可見,網(wǎng)絡(luò)爬蟲技術(shù)是一把雙刃劍,一個(gè)不小心可能就會(huì)傷害到自己和

他人,所以我們技術(shù)人員要懂法、守法。在法律允許的范圍內(nèi)去編寫自己的腳本

程序,堅(jiān)決不能做違法犯罪的行為。

有爬蟲技術(shù),那也一定存在反爬取的技術(shù)了。爬蟲要能夠繞過或者突破人家

的防守機(jī)制從而獲取到自己想到要的數(shù)據(jù)。常見的反爬機(jī)制有要求你登錄輸入

驗(yàn)證碼、IP、JS加密、css反爬、或者Ajax異步等手段,這些手段會(huì)加大爬取

數(shù)據(jù)的工作量,也會(huì)加大網(wǎng)站的開發(fā)成本,所以像一般的小網(wǎng)站最多設(shè)置一個(gè)小

反爬,對于我們獲取數(shù)據(jù)來說比較容易。

2.3.2文件存取技術(shù)

Python存儲(chǔ)語句如圖2-1顯示:

圖2-1python存儲(chǔ)語句圖

2.3.3可視化技術(shù)

爬取下來的數(shù)據(jù)通過預(yù)處理、保存為csv文件格式。該數(shù)據(jù)我們能否一眼

就得到我們想要的結(jié)論呢?很顯然是不可能的,一目十行也只是瀏覽,機(jī)器不

能根據(jù)特定場景和用戶需求來進(jìn)行思考我們就需要一種技術(shù),根據(jù)我們獲取到

的龐大數(shù)據(jù)將其通過統(tǒng)計(jì)學(xué)圖形的方式展現(xiàn)在我們眼前,讓我們對其結(jié)果一目

了然。這個(gè)就是數(shù)據(jù)可視化技術(shù)。

可視化技術(shù)使人能夠在三維圖形世界中直接對具有形體的信息進(jìn)行操作,

5

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

和計(jì)算機(jī)直接交流。這種技術(shù)已經(jīng)把人和機(jī)器的力量以一種直覺而自然的方式

加以統(tǒng)一,這種革命性的變化無疑將極大地提高人們的工作效率??梢暬夹g(shù)

賦予人們一種仿真的、三維的并且具有實(shí)時(shí)交互的能力,這樣人們可以在三維

圖形世界中用以前不可想象的手段來獲取信息或發(fā)揮自己創(chuàng)造性的思維。多年

來可視化的技術(shù)也逐漸發(fā)展成為了一下三類:科學(xué)可視化、信息可視化、可視

化分析。而我們這里用到的就是信息可視化,信息可視化的處理對象是非結(jié)構(gòu)化、

非幾何的抽象數(shù)據(jù),如金融交易、社交網(wǎng)絡(luò)和文本數(shù)據(jù),其核心挑戰(zhàn)是針對大尺

度高維復(fù)雜數(shù)據(jù)如何減少視覺混淆對信息的干擾。

本次畢業(yè)設(shè)計(jì)的數(shù)據(jù)可視化,使用python第三方庫matpoltlab、pyecharts

去進(jìn)行,兩個(gè)庫中包含了許多庫,分別對應(yīng)餅圖、條形圖、直方圖、折線圖等圖

形,可以很好的將數(shù)據(jù)高效率的表現(xiàn)出來。

3下廚房網(wǎng)數(shù)據(jù)采集

3.1采集頁面分析

我們首先通過谷歌瀏覽器搜索下廚房進(jìn)入首頁,點(diǎn)擊全部分類找到菜式目

錄下查看不同菜品的信息,觀察圖3-1,3-2其中URL為:

/category/*****/,觀察下面兩張圖片可以看出,

點(diǎn)擊不同的菜式網(wǎng)址也在變化。

圖3-1下廚房網(wǎng)址頁面1圖

6

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

圖3-2下廚房網(wǎng)址頁面2圖

點(diǎn)擊鼠標(biāo)右鍵選擇檢查,跳出開發(fā)者工具頁面,如圖3-3所示。

圖3-3分析網(wǎng)頁頁面圖

切換至網(wǎng)絡(luò)面板(Network),刷新一下頁面,點(diǎn)擊“400076/”資源里的,

Headers標(biāo)簽,可以看到它的請求類型是GET,所以我們可以根據(jù)以上特點(diǎn)通過

Requests方法發(fā)送請求來獲得響應(yīng)的數(shù)據(jù),指定編碼后就可以獲取網(wǎng)頁信息,

如3-4所示。接著往下翻就可以找到爬取時(shí)需要使用的User-Agent,如3-5所

示。

7

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

圖3-4分析網(wǎng)頁Headers請求頁面圖

圖3-5User-Agent圖

3.2字段分析

8

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

點(diǎn)擊開發(fā)者工具界面上方的數(shù)據(jù)預(yù)覽Preview按鈕,如圖3-6,可以看到我

們需要的所有的數(shù)據(jù)信息都是呈現(xiàn)json格式傳遞在這個(gè)網(wǎng)頁面,所以我們只要

重復(fù)獲取響應(yīng)然后把數(shù)據(jù)依次寫入到csv格式的文件當(dāng)中就好了。

圖3-6分析數(shù)據(jù)xpath信息頁面圖

點(diǎn)擊需要獲取的數(shù)據(jù)內(nèi)容,比方說要獲取菜名,利用開發(fā)者模式定位到菜名

字段的位置,右擊元素面板對應(yīng)的元素選擇copy,就可以復(fù)制菜名對應(yīng)的xpath

信息,如圖3-6,可以重復(fù)以上操作獲取其他字段的xpath信息。

圖3-7分析數(shù)據(jù)xpath信息頁面圖

9

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

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

3.3.1導(dǎo)入所需庫

自行下載導(dǎo)入進(jìn)行網(wǎng)頁數(shù)據(jù)爬取以及存儲(chǔ)會(huì)用到的庫,如下代碼所示。

圖3-8導(dǎo)入庫圖

3.3.2頁面解析

創(chuàng)建一個(gè)空列表用來存放代表不同菜式的數(shù)字,遍歷該列表,利用for循

環(huán)來實(shí)現(xiàn)獲取不同菜式網(wǎng)頁的內(nèi)容,通過觀察不同頁面的url可以看出

category/{}代表不同的菜式,page{}代表不同頁數(shù)的頁面,利用format函數(shù)

改變數(shù)字來實(shí)現(xiàn)自動(dòng)切換菜式和翻頁的效果,這里我們每個(gè)菜系爬取25頁。獲

取url后我們利用requests對網(wǎng)頁發(fā)起請求,使用lxml對獲取到的內(nèi)容進(jìn)行

解析,解析成功后使用xpath語句對需要的字段內(nèi)容進(jìn)行爬取。

圖3-9頁面解析圖

3.3.3數(shù)據(jù)獲取

遍歷lis列表獲取每一個(gè)菜品的信息。獲取下面分析所需要的字段,['菜

名','菜品鏈接','用料','評分','7天內(nèi)做過的人數(shù)','作者','菜系']。菜品鏈

接我們需要拼接一下公共部分,后期在文件里面存儲(chǔ)的鏈接就可以直接打開。

在對用料這個(gè)字段的數(shù)據(jù)進(jìn)行爬取時(shí)存儲(chǔ)顯示不完整,所以在這里使用join函

數(shù)把單個(gè)原料整合在一起,如['奶油奶酪','藍(lán)莓','茴香']這個(gè)列表的元素在

經(jīng)過整合之后就變成了['奶油奶酪,藍(lán)莓,茴香']。在爬取7天內(nèi)做過人數(shù)的字

段時(shí)有一些新更新的菜品因?yàn)檫€沒有人做過會(huì)影響存儲(chǔ),所以我們加入判斷如

10

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

果爬取列表為空添加元素為0。對于菜系字段我們封裝了一個(gè)choose函數(shù)通過

不同的編碼來判斷是哪種菜系。

圖3-10數(shù)據(jù)獲取圖

3.3.4網(wǎng)頁數(shù)據(jù)存儲(chǔ)

獲取完所用字段之后,使用zip函數(shù)把所有的菜品名稱、鏈接、用料、評

分、做菜人數(shù)、作者以及菜系進(jìn)行整合。每循環(huán)一次就把整合好的數(shù)據(jù)存儲(chǔ)在

定義好的列表中,最后利用pandas庫的功能存儲(chǔ)成csv文件,指定編碼

utf-8_sig。

代碼如下:

圖3-11數(shù)據(jù)存儲(chǔ)圖

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

獲得所需的數(shù)據(jù)之后,為了方便下一步繪圖我們需要對數(shù)據(jù)進(jìn)行預(yù)處理,數(shù)

據(jù)清洗是對數(shù)據(jù)進(jìn)行重新審查和校驗(yàn)的過程,目的在于刪除重復(fù)信息、糾正存

在的錯(cuò)誤,或者是重新生成便于后續(xù)可視化的字段,還要保證數(shù)據(jù)的一致性,不

僅如此,我們需要將數(shù)據(jù)進(jìn)行重新排序使數(shù)據(jù)有序化,這樣子在開發(fā)人員對數(shù)據(jù)

信息的調(diào)用和共享過程中都很方便。下面我們需要將爬下來的數(shù)據(jù)和網(wǎng)頁原數(shù)

據(jù)進(jìn)行比對,并且檢查是否出現(xiàn)空值、錯(cuò)值,還有數(shù)據(jù)的位置是否正確。根據(jù)不

同的需求我們要對數(shù)據(jù)進(jìn)行不同的處理。

11

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

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

在本畢業(yè)設(shè)計(jì)中我們主要是把無用列進(jìn)行刪除,再檢查一下后續(xù)可視化需

要用到的字段有無重復(fù)、錯(cuò)誤和缺失,如菜名、用料等字段,同時(shí)還要注意字

段的類型。

4.1.1數(shù)據(jù)預(yù)覽

圖4-1數(shù)據(jù)預(yù)覽圖

導(dǎo)入兩個(gè)庫顯示部分?jǐn)?shù)據(jù),我們把后續(xù)分析用不到的菜品鏈接這一列刪除。

圖4-2刪除無用列圖

12

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

4.1.2菜名重復(fù)數(shù)據(jù)去除

我們把關(guān)于菜名字段重復(fù)的數(shù)據(jù)行進(jìn)行刪除。

圖4-3重復(fù)數(shù)據(jù)去除圖

4.1.3無效值、缺失值處理

下廚房評分滿分為10,然而通過觀察評分我們可以看出存在數(shù)據(jù)大于10以

上的字段,為了后面便于分析,我們用replace來把評分大于10和等于0的數(shù)

據(jù)統(tǒng)一替換成空值進(jìn)行下一步處理。

圖4-4無效值處理圖

13

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

經(jīng)過檢查,發(fā)現(xiàn)數(shù)據(jù)除了剛剛置空的評分字段還有用料這一列存在缺失,那

么我們把存在空值的數(shù)據(jù)行進(jìn)去除。

圖4-5缺失值數(shù)據(jù)行去除圖

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

剩下需要的數(shù)據(jù),重新排序整理后以原網(wǎng)頁格式存入data_zhp.csv文件中,

留存后續(xù)作為數(shù)據(jù)分析可視化使用。數(shù)據(jù)儲(chǔ)存的方法有很多種,如果需要儲(chǔ)存較

大的數(shù)據(jù)信息就需要用數(shù)據(jù)庫,數(shù)據(jù)庫使用的sql語句在頻繁的數(shù)據(jù)修改和統(tǒng)

計(jì)計(jì)算方面表現(xiàn)都很優(yōu)秀?;蛘咭部梢灾苯佑糜浭卤靖袷絻?chǔ)存(txt),其他文

件的形式儲(chǔ)存csv、excel、json等,為了方便讀取且本次爬取的數(shù)據(jù)較少,所

以我們選擇保存在csv就好了。

如圖4-6所示:

圖4-6數(shù)據(jù)存儲(chǔ)為csv文件圖

14

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

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

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

導(dǎo)入相關(guān)庫,使用python加載源數(shù)據(jù),如圖5-1、5-2。

圖5-1數(shù)據(jù)加載頁面圖

圖5-2數(shù)據(jù)頁面圖

15

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

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

5.2.1各菜系菜譜數(shù)量占比餅圖

圖5-3數(shù)據(jù)展示頁面圖

按照文件中菜系的字段將數(shù)據(jù)進(jìn)行匯總和降序處理如圖5-3中可以看出家

常菜數(shù)量占比最高,其次就是快手菜。說明菜譜還是多以生活中來并且貼近生活,

大家更加喜歡去分享平時(shí)自己喜歡且更容易接觸到的菜譜。而相對于下酒菜來

說受眾群體相對較小菜譜數(shù)量也少??焓植藬?shù)量占比僅次于家常菜,說明短視

頻用戶基數(shù)大,用來推廣菜式菜品更為高效。創(chuàng)新占比排名第三。綜上,對于

美食網(wǎng)站而言,菜式內(nèi)容要更為大眾化,新潮化。

16

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

5.2.2最受歡迎的十二道菜折線圖

圖5-4數(shù)據(jù)展示頁面圖

根據(jù)字段7天內(nèi)做過的人數(shù)繪制圖5-4,中可以看出來7內(nèi)天最受歡迎的十

二道菜,該圖可以從一周做過的人數(shù)多少來分析出最近一周的熱門菜譜有哪些,

讓大家緊跟熱點(diǎn),買菜的時(shí)候可以有所參考。通過分析該菜品不難發(fā)現(xiàn)菜名中

帶有‘酸辣’等字眼,天氣逐漸炎熱大家更喜歡比較開胃的菜品。

17

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

5.2.3菜譜評分分布玫瑰圖

圖5-5數(shù)據(jù)展示頁面圖

下廚房網(wǎng)菜譜實(shí)行10分制,從圖5-5可以看出菜品的評分占比分布不勻,

說明該評分可信度較高。獲得8到9分菜品數(shù)占總菜品數(shù)的百分之三十左右,

說明該網(wǎng)站上的菜品能得到半數(shù)以上用戶的好評,百分之四十五的用戶給了7

分以下的評價(jià),這么看來許多菜品還是有進(jìn)步的空間。只有接近百分之十一的

菜品獲得了比較高的評價(jià)算得上“鎮(zhèn)站之寶”的菜品了。總體來說下廚房好評

還是占半數(shù)的,可以看出下廚房還是得到了大家的認(rèn)可。產(chǎn)品更新?lián)Q代經(jīng)歷淘

汰才能跟上人們?nèi)找嬖鲩L的需求,菜品也是一樣,網(wǎng)站要給出激勵(lì)用戶發(fā)布有

質(zhì)量的菜式,也要同時(shí)吸引更多新用戶來做菜進(jìn)行評分,對于評分高的菜譜發(fā)

布作者可以適當(dāng)鼓勵(lì),這樣網(wǎng)站才能有活力長久的運(yùn)營下去。

18

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

5.2.4作者發(fā)布菜品數(shù)量及平均分柱狀圖

圖5-6數(shù)據(jù)展示頁面圖

該圖匯總了發(fā)布菜品數(shù)量前十的作者以及他們發(fā)布菜品評價(jià)的平均分,并

且按照評價(jià)平均分降序進(jìn)行排序。從圖中可以看出作品數(shù)量占大頭的分別是一

顆糖572196和古典美人美食,廚房筆記-fang跟在其后,其余的作者數(shù)量就都

較為一般了,然而數(shù)量不能決定什么,菜品評價(jià)高才是王道。作品數(shù)量較多的

作者一般對食物有更多的接觸,對美食有更多的了解也樂于分享,但是對于一

個(gè)美食網(wǎng)站來說既要有足夠菜式數(shù)量能滿足各類人群的需求,也要保證其菜品

的質(zhì)量才能有穩(wěn)定的用戶群體。對于琳瑯滿目的菜品害怕容易失敗口味不好的

用戶不如關(guān)注圖中菜品評價(jià)較高的作者,參考他的菜譜更快做出自己想要的美

食。

19

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

5.2.5用料詞云圖

圖5-7數(shù)據(jù)展示頁圖

中國菜講究色香味,想要做出佳肴如何用料也有講究。如圖5-7所示,字

體越大的字段說明在菜譜中用的越多,如鹽、耗油、生抽這些用料。用戶可以

根據(jù)用料詞云圖來填充家中的廚房。

5.3綜述

本畢業(yè)設(shè)計(jì)通過xpath對下廚房網(wǎng)站數(shù)據(jù)進(jìn)行爬取,我們得到了菜品種類

和評分等數(shù)據(jù),通過刪除不需要的列,查看評分字段對無效值和缺失值進(jìn)行處理

之后,可視化這些數(shù)

溫馨提示

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

最新文檔

評論

0/150

提交評論