淘寶網(wǎng)家中常備藥品的商品數(shù)據(jù)采集與分析_第1頁(yè)
淘寶網(wǎng)家中常備藥品的商品數(shù)據(jù)采集與分析_第2頁(yè)
淘寶網(wǎng)家中常備藥品的商品數(shù)據(jù)采集與分析_第3頁(yè)
淘寶網(wǎng)家中常備藥品的商品數(shù)據(jù)采集與分析_第4頁(yè)
淘寶網(wǎng)家中常備藥品的商品數(shù)據(jù)采集與分析_第5頁(yè)
已閱讀5頁(yè),還剩20頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

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

目錄

1引言1

1.1項(xiàng)目背景1

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

1.2.1Python簡(jiǎn)介2

1.2.2Pycharm簡(jiǎn)介2

1.2.3JupyterNotebook簡(jiǎn)介3

1.2.4Python第三方庫(kù)簡(jiǎn)介3

1.2.5谷歌瀏覽器簡(jiǎn)介4

2需求分析4

2.1可行性需求分析4

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

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

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

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

2.3.3可視化技術(shù)6

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

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

3.2字段分析8

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

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

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

4.1.1原始數(shù)據(jù)格式14

4.1.2過(guò)程分析與代碼展示14

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

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

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

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

I

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

5.2.1統(tǒng)計(jì)店鋪出現(xiàn)次數(shù)排名top20的店鋪名稱17

5.2.2依據(jù)商品銷量進(jìn)行統(tǒng)計(jì)排名top20的商品名稱19

5.2.3依據(jù)價(jià)格與銷量數(shù)據(jù)分析其關(guān)系20

5.3數(shù)據(jù)分析22

6小結(jié)22

參考資料23

II

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

淘寶網(wǎng)家中常備藥品的商品數(shù)據(jù)采集與分析

1引言

從18世紀(jì)的蒸汽革命到19世紀(jì)的電氣革命再到20世紀(jì)的信息革命,隨著

時(shí)代的不斷進(jìn)步和社會(huì)的快速發(fā)展,互聯(lián)網(wǎng)已成為人們?nèi)粘I钪胁豢苫蛉钡?/p>

一部分。計(jì)算機(jī)互聯(lián)網(wǎng)技術(shù)在當(dāng)下為百姓民生的各個(gè)方面提供了智能生活的技

術(shù)基礎(chǔ),提高了人們的幸福感和滿足感,人們對(duì)互聯(lián)網(wǎng)行業(yè)的需求日益擴(kuò)大,

互聯(lián)網(wǎng)在方便人們生活的同時(shí),各行各業(yè)的人們也利用互聯(lián)網(wǎng)方便、快捷的特

點(diǎn),為企業(yè)或者個(gè)人在這個(gè)網(wǎng)絡(luò)大數(shù)據(jù)環(huán)境下創(chuàng)造出更高的利潤(rùn)價(jià)值。廣大人民

群眾的日常消費(fèi)、出行等產(chǎn)生的數(shù)據(jù)為技術(shù)工作者提供了海量的數(shù)據(jù)源頭,讓我

們?cè)谶@個(gè)行業(yè)領(lǐng)域內(nèi)不斷尋找新的資源,創(chuàng)造新的價(jià)值,推動(dòng)互聯(lián)網(wǎng)的不斷更

迭。淘寶網(wǎng)家中常備藥品商品數(shù)據(jù)采集與分析是一項(xiàng)對(duì)淘寶網(wǎng)上家庭健康領(lǐng)域

的商品數(shù)據(jù)進(jìn)行收集和處理的工作。通過(guò)該工作,可以獲得關(guān)于家庭用藥的商

品詳細(xì)信息(如銷售情況、價(jià)格等),并將這些信息整合起來(lái)以便進(jìn)一步分析,

最終得出有實(shí)際價(jià)值意義的結(jié)論。

1.1項(xiàng)目背景

現(xiàn)如今,即使我們已經(jīng)實(shí)現(xiàn)了全面脫貧和全面建成小康社會(huì)的目標(biāo),但以

人為本的核心未變,醫(yī)療行業(yè)仍是百姓以及國(guó)家關(guān)注的重點(diǎn),新冠肺炎從2019

年12月份到現(xiàn)如今一直影響著人們的日常生活,不僅威脅個(gè)人生命健康還對(duì)日

常工作出行等方面產(chǎn)生較大影響,國(guó)家不斷推行免費(fèi)核酸活動(dòng),公共基礎(chǔ)設(shè)施

建設(shè),宣揚(yáng)共同抗擊疫情等等工作,來(lái)盡量規(guī)避新冠對(duì)人們帶來(lái)的負(fù)面影響,

與此同時(shí),大數(shù)據(jù)技術(shù),互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展也為我們抗擊疫情做了很大的

貢獻(xiàn),如健康碼,行程碼都出自大數(shù)據(jù)技術(shù)。到了2022年下半年,病毒的攻擊

力相對(duì)減弱,國(guó)家決定實(shí)行一定程度的放寬政策,但隨之而來(lái)的是很多人都感

染新冠,因?yàn)閵W密克戎這類病毒的傳染能力比較強(qiáng),所以導(dǎo)致感染范圍廣,面

積大,很多家庭沒(méi)有備用抗病毒藥品的習(xí)慣,再加上藥店的儲(chǔ)備資源沒(méi)有那么

多,所以出現(xiàn)了購(gòu)藥難,購(gòu)藥貴的情況,很多年輕人靠自身強(qiáng)大的身體素質(zhì)抵

抗病毒,而老年人和小孩因?yàn)樽陨淼挚沽Σ蛔愣鴤涫苷勰?。到現(xiàn)如今,人們受

疫情的影響已經(jīng)逐漸減少,但疫情還沒(méi)有完全過(guò)去,也為了預(yù)防日后類似的流

感病毒出現(xiàn),為了更好地守護(hù)個(gè)人以及家人的健康,加強(qiáng)自身免疫力的同時(shí),

1

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

個(gè)人以及網(wǎng)店對(duì)各類日常所需藥品進(jìn)行預(yù)備是很有必要的。

我的項(xiàng)目就是針對(duì)人們?cè)诟腥拘鹿诟叱逼陂g大量購(gòu)買家中常備藥品的這一

現(xiàn)狀,爬取淘寶網(wǎng)站人們購(gòu)買各類日常必備藥品的數(shù)據(jù),對(duì)其進(jìn)行處理,分析,進(jìn)而

可視化。通過(guò)對(duì)繁雜的數(shù)據(jù)經(jīng)過(guò)清洗加分析可以得出人們購(gòu)買的最多的家中常

備藥品是哪些,每一類的藥品購(gòu)買數(shù)量有多少,以及哪些網(wǎng)店的家中常備藥品

月銷量最高,所以我的項(xiàng)目包含數(shù)據(jù)采集、數(shù)據(jù)處理、數(shù)據(jù)分析與存儲(chǔ)以及數(shù)

據(jù)可視化部分。

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

由于這個(gè)項(xiàng)目涉及抗病毒藥品的數(shù)據(jù)采集,分析與統(tǒng)計(jì),存儲(chǔ),以及數(shù)據(jù)

可視化圖表呈現(xiàn),所以要用到的技術(shù)包括Python爬蟲(chóng)技術(shù),數(shù)據(jù)預(yù)處理技術(shù),

可視化技術(shù),所用到的開(kāi)發(fā)工具包括Pycharm、JupyterNotebook、第三方庫(kù)、瀏

覽器GoogleChrome。

1.2.1Python簡(jiǎn)介

python是一種高級(jí)編程語(yǔ)言,由荷蘭程序員guidovanrossum在1991年創(chuàng)

建。python語(yǔ)言具備簡(jiǎn)單、易讀、易維護(hù)的特點(diǎn),被廣泛應(yīng)用于數(shù)據(jù)科學(xué)、機(jī)

器學(xué)習(xí)、人工智能、web開(kāi)發(fā)等領(lǐng)域。與其他編程語(yǔ)言相比,python優(yōu)勢(shì)在于以

下幾點(diǎn):

1、程序簡(jiǎn)潔易讀:python程序結(jié)構(gòu)清晰,語(yǔ)法簡(jiǎn)單易懂,代碼量相對(duì)較少。

2、多態(tài)性:支持多種編程風(fēng)格和范式,包括面向過(guò)程、面向?qū)ο?、函?shù)式

編程等。

3、強(qiáng)大的標(biāo)準(zhǔn)庫(kù):python內(nèi)置了許多強(qiáng)大且易用的庫(kù),如numpy、pandas

和matplotlib等.

4、跨平臺(tái)性:python程序不需要經(jīng)過(guò)特別定制就可以運(yùn)行在Unix、Windows

和MacOS等操作系統(tǒng)上。

直至2022年7月份,根據(jù)TIOBE排行榜的顯示,Python依然占據(jù)第1名

的位置,并且市場(chǎng)份額仍在持續(xù)提升。

1.2.2Pycharm簡(jiǎn)介

pycharm是一款由Jetbrains開(kāi)發(fā)的python集成開(kāi)發(fā)環(huán)境(integrated

developmentenvironment,簡(jiǎn)稱IDE),它旨在提供全面的python開(kāi)發(fā)工具,為

編程人員提供更方便、高效的開(kāi)發(fā)體驗(yàn)。pycharm擁有豐富的編輯器功能,如語(yǔ)

2

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

法檢查、代碼補(bǔ)全、重構(gòu)、調(diào)試和測(cè)試等,能夠幫助開(kāi)發(fā)者編寫高質(zhì)量的python

代碼。同時(shí),pycharm還支持多種框架和庫(kù),比如django、flask等,提供完整的

開(kāi)發(fā)環(huán)境,方便開(kāi)發(fā)web應(yīng)用程序。pycharm跨平臺(tái)支持Windows、蘋果OSX

和Linux操作系統(tǒng),具有兩個(gè)版本,community版是免費(fèi)的,professional版需要

購(gòu)買并提供更強(qiáng)大的功能和工具。pycharm是一個(gè)優(yōu)秀的python開(kāi)發(fā)工具,可

大幅提高開(kāi)發(fā)速度和效率。

1.2.3JupyterNotebook簡(jiǎn)介

JupyterNotebook是一種基于web的交互式計(jì)算環(huán)境,它可以將可執(zhí)行代碼、

數(shù)學(xué)公式、圖像和文本等元素組合在一個(gè)文檔中,方便用戶進(jìn)行數(shù)據(jù)分析、機(jī)

器學(xué)習(xí)等任務(wù)。JupyterNotebook具有如下特點(diǎn):

1、語(yǔ)言支持廣泛:JupyterNotebook可以支持包括Python、R、Julia等在內(nèi)

的多種編程語(yǔ)言。

2、交互式計(jì)算:用戶可以通過(guò)修改代碼或輸入?yún)?shù)等方式與計(jì)算結(jié)果互動(dòng)。

3、可視化呈現(xiàn):JupyterNotebooks支持豐富的數(shù)據(jù)可視化功能,用戶可以

直接在notebook文檔中展示圖形、表格等信息。

4、易共享和復(fù)用:由于JupyterNotebook是一個(gè)文件,用戶可以輕松分享

自己的工作成果,別人可以快速了解到分析步驟并進(jìn)行修改。

5、強(qiáng)大的插件系統(tǒng):用戶可以通過(guò)插件系統(tǒng)提高notebook的使用效率,減

少重復(fù)性勞動(dòng)。

總之,JupyterNotebook是數(shù)據(jù)科學(xué)家和研究人員常用的工具之一,因?yàn)樗?/p>

能夠幫助他們更好地進(jìn)行實(shí)驗(yàn)和探索,并迅速地交流結(jié)果。

1.2.4Python第三方庫(kù)簡(jiǎn)介

requests:最友好的網(wǎng)絡(luò)爬蟲(chóng)功能庫(kù),是Python中可以用代碼來(lái)模擬發(fā)送網(wǎng)

絡(luò)請(qǐng)求,并得到響應(yīng)數(shù)據(jù)的一個(gè)第三方庫(kù),使用起來(lái)比urllib庫(kù)更簡(jiǎn)潔。

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

存入到csv表格中。并且csv文件是表格和數(shù)據(jù)庫(kù)中常見(jiàn)的文件操作格式。

random:random庫(kù)用于生成偽隨機(jī)數(shù),是一個(gè)標(biāo)準(zhǔn)庫(kù)。

time:time庫(kù)是python中處理時(shí)間的標(biāo)準(zhǔn)庫(kù),主要有計(jì)算機(jī)時(shí)間表達(dá)、獲

取系統(tǒng)時(shí)間并格式化、提供系統(tǒng)級(jí)精確計(jì)時(shí)等功能。

selenium:selenium庫(kù)是一個(gè)自動(dòng)化測(cè)試工具,利用它可以驅(qū)動(dòng)瀏覽器執(zhí)行

特定的動(dòng)作,如點(diǎn)擊、下拉等操作,同時(shí)還可以獲取瀏覽器當(dāng)前呈現(xiàn)的頁(yè)面的

3

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

源代碼,做到可見(jiàn)即可爬。同時(shí)使用selenium+cookies方式可以實(shí)現(xiàn)免密登錄來(lái)

爬取數(shù)據(jù)。

pandas:pandas庫(kù)是一個(gè)免費(fèi)開(kāi)源的第三方Python庫(kù),其基于numpy庫(kù)開(kāi)

發(fā)而來(lái),提供了兩種數(shù)據(jù)結(jié)構(gòu),Series與DataFrame,這兩種數(shù)據(jù)結(jié)構(gòu)極大地增

強(qiáng)的了Pandas的數(shù)據(jù)分析能力。

seaborn:seaborn庫(kù)是基于matplotlib的數(shù)據(jù)集分布可視化庫(kù)。它在

matplotlib的基礎(chǔ)上,進(jìn)行了更高級(jí)的封裝,從而使得繪圖更加容易,不需要經(jīng)過(guò)大

量的調(diào)整,就能使圖像變得精致。

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

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

1.2.5谷歌瀏覽器簡(jiǎn)介

GoogleChrome是一款由Google公司開(kāi)發(fā)的網(wǎng)頁(yè)瀏覽器,該瀏覽器是一款

開(kāi)源軟件,目標(biāo)是提升穩(wěn)定性、速度和安全性,并創(chuàng)造出簡(jiǎn)單且有效率的使用

者界面。大部分人選擇使用谷歌瀏覽器爬蟲(chóng)有以下幾個(gè)原因:

1、內(nèi)核:國(guó)產(chǎn)的瀏覽器基本都是Chrome內(nèi)核,包括現(xiàn)在微軟的edge也開(kāi)

始用Chrome內(nèi)核。web前端測(cè)試或者解決bug用Chrome可以保證大多數(shù)人正

常使用。

2、插件:Chrome應(yīng)用商店,基本上想要的插件都能搜索到。程序員常常要

瀏覽國(guó)外的英文站點(diǎn),谷歌的翻譯插件真的很有幫助。

3、f12:Web無(wú)論是前后端開(kāi)發(fā)應(yīng)該都會(huì)用到Chrome開(kāi)發(fā)者工具,可以稱

之為神器,js下斷點(diǎn),查看后端響應(yīng)數(shù)據(jù)等等都很實(shí)用。除了開(kāi)發(fā),平常如果網(wǎng)

站有什么限制,比如不準(zhǔn)復(fù)制文字,不準(zhǔn)下載圖片,都可以用F12繞過(guò)。

2需求分析

2.1可行性需求分析

1、技術(shù)可行性

在淘寶網(wǎng)家庭常備藥品商品數(shù)據(jù)采集與分析項(xiàng)目中,技術(shù)可行性是非常重

要的。主要包含以下幾個(gè)方面:

數(shù)據(jù)采集:淘寶網(wǎng)作為一個(gè)大型電商平臺(tái),提供了多種數(shù)據(jù)獲取方式,包

括網(wǎng)頁(yè)抓取、API調(diào)用等。這里通過(guò)Python編程語(yǔ)言來(lái)編寫爬蟲(chóng)程序,利用HTTP

請(qǐng)求和解析HTML等技術(shù)獲取淘寶網(wǎng)上相關(guān)數(shù)據(jù),為了突破淘寶對(duì)爬蟲(chóng)的反爬

4

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

機(jī)制,采用一些技巧,如設(shè)置請(qǐng)求頭部信息、IP代理池等。

數(shù)據(jù)清洗:采集到的數(shù)據(jù)可能存在重復(fù)、錯(cuò)亂、格式異常等問(wèn)題,需要進(jìn)

行數(shù)據(jù)清洗和預(yù)處理。通過(guò)Jupyternotebook可以及時(shí)準(zhǔn)確地清洗數(shù)據(jù)。

數(shù)據(jù)存儲(chǔ):由于數(shù)據(jù)量較大,需要對(duì)數(shù)據(jù)進(jìn)行存儲(chǔ)和管理。選擇存儲(chǔ)為csv

文件既確保了數(shù)據(jù)的安全性又易于讀取應(yīng)用。

數(shù)據(jù)統(tǒng)計(jì)與分析:最后需要將分析結(jié)果以圖表形式呈現(xiàn)出來(lái),這里采用了

python中的多個(gè)可視化工具,使得代碼簡(jiǎn)潔清晰。

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

教育、住房、醫(yī)療一直是壓在人民心頭的三座大山,也是我們中國(guó)社會(huì)主義

發(fā)展道路上的巨大難題,不僅國(guó)家,百姓個(gè)人也尤為關(guān)注醫(yī)療方面。同時(shí)隨著

互聯(lián)網(wǎng)的發(fā)展,網(wǎng)上購(gòu)物的群眾數(shù)量逐年遞增,人們?cè)絹?lái)越熱衷于網(wǎng)上購(gòu)物,

此次疫情爆發(fā),受出行等因素限制,很多人都通過(guò)網(wǎng)上購(gòu)買藥品來(lái)抵抗疫情。

本設(shè)計(jì)通過(guò)采集大型購(gòu)物網(wǎng)站淘寶網(wǎng)網(wǎng)站內(nèi)的數(shù)據(jù),分析人們購(gòu)買日常必備

藥品的商品數(shù)據(jù)信息。采集出來(lái)的數(shù)據(jù)真實(shí)有效,進(jìn)行處理分析之后將其可視

化,可以清晰的知道人們認(rèn)可的購(gòu)買多的家中常備藥品的種類主要有哪些,以

及每一類的藥品銷量是多少,哪些網(wǎng)站的銷量最高以及網(wǎng)上藥店是否需要擴(kuò)大

儲(chǔ)備量來(lái)滿足人們的需求和擴(kuò)大自身利益。

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

淘寶網(wǎng)是阿里巴巴集團(tuán)旗下的一個(gè)在線購(gòu)物平臺(tái),成立于2003年。它是中

國(guó)規(guī)模最大、用戶數(shù)量最多的在線零售平臺(tái)之一,提供各種類別的商品,如服

裝、鞋子、家居、食品等。根據(jù)2019年第三季度的數(shù)據(jù),淘寶網(wǎng)占據(jù)中國(guó)電商

市場(chǎng)約58%的份額,是中國(guó)最大的電子商務(wù)平臺(tái)之一。同時(shí),淘寶網(wǎng)也是全球

銷售量最高的電商平臺(tái)之一,與阿里巴巴集團(tuán)旗下的天貓共同主導(dǎo)了中國(guó)的電

商市場(chǎng)。截至目前,淘寶網(wǎng)的用戶規(guī)模已經(jīng)超過(guò)6億人,服務(wù)范圍涵蓋了全國(guó)

各個(gè)地區(qū)和行業(yè)。隨著移動(dòng)互聯(lián)網(wǎng)的發(fā)展,淘寶網(wǎng)也逐漸從pc端向移動(dòng)端轉(zhuǎn)型,

目前移動(dòng)端訪問(wèn)量已經(jīng)超過(guò)了pc端訪問(wèn)量的一半。

總體來(lái)說(shuō),淘寶網(wǎng)在中國(guó)電商市場(chǎng)上的地位十分重要,具有非常大的影響

力和市場(chǎng)話語(yǔ)權(quán)。之所以選擇將淘寶作為數(shù)據(jù)采集的平臺(tái)是因?yàn)槠潺嫶蟮臄?shù)據(jù),

而對(duì)家中常備藥品進(jìn)行數(shù)據(jù)采集與分析是因?yàn)槿藗兊娜粘I铍x不開(kāi)這些藥制

品,選擇他可以真實(shí)的反映家中常備藥的商品種類和銷售數(shù)量以及銷量不同的

網(wǎng)店信息。

5

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

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

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

網(wǎng)絡(luò)爬蟲(chóng)技術(shù)(webcrawling)是指使用計(jì)算機(jī)程序自動(dòng)地獲取互聯(lián)網(wǎng)上的

特定信息,例如網(wǎng)頁(yè)、圖片、視頻、音頻等資源。網(wǎng)絡(luò)爬蟲(chóng)開(kāi)發(fā)的語(yǔ)言有很多,

比如說(shuō)PHP、Go、C++、Java、Python等,不同的語(yǔ)言有不同的優(yōu)缺點(diǎn),而我選

擇用Python做為實(shí)現(xiàn)爬蟲(chóng)的語(yǔ)言,主要有以下因素:

首先相比其他動(dòng)態(tài)腳本語(yǔ)言,Python語(yǔ)言模塊豐富,提供了豐富的內(nèi)置模

塊、第三方模塊,以及成熟的網(wǎng)絡(luò)爬蟲(chóng)框架,能夠快速實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲(chóng)的基本功

能,比如說(shuō)request庫(kù)以及selenium庫(kù)。

其次Python語(yǔ)法簡(jiǎn)潔,對(duì)于同一個(gè)功能,使用Python只需要編寫幾十行代

碼,而使用Java可能需要編寫幾百行代碼。另外開(kāi)發(fā)效率也非常高,相比較其

他語(yǔ)言而言我更熟悉python語(yǔ)言。

2.3.2文件存取技術(shù)

python中的文件存儲(chǔ)技術(shù)有很多種,如json,CSV,MySQL數(shù)據(jù)庫(kù),Redis

數(shù)據(jù)庫(kù),Mongdb數(shù)據(jù)庫(kù)等,其中各有各的優(yōu)點(diǎn)與缺點(diǎn),其中json格式和CSV

文件存儲(chǔ)操作簡(jiǎn)單方便,也是我在日常中用的最多的,故在此設(shè)計(jì)中我用json

格式和CSV文件存儲(chǔ)這種方式,同時(shí)他們也有各自的優(yōu)點(diǎn)。

1、使用json格式存儲(chǔ):它是一種可以對(duì)數(shù)據(jù)進(jìn)行交換的格式,對(duì)數(shù)據(jù)的表

示是使用的是獨(dú)立的編程語(yǔ)言,對(duì)數(shù)據(jù)的存儲(chǔ)是采用的文本格式,可以很好解

決Python2和Python3版本的編碼問(wèn)題,數(shù)據(jù)內(nèi)容的結(jié)構(gòu)上會(huì)有點(diǎn)像Python中

的字典和列表,層次清晰,可以方便閱讀和理解,同時(shí)還可以讓Python解釋器

對(duì)文件進(jìn)行解析和生成,有效的提高了開(kāi)發(fā)傳輸?shù)男省?/p>

2、csv文件:csv文件就像是我們平時(shí)使用的excel文件,如果將數(shù)據(jù)存儲(chǔ)

為csv文件的話,我們可以直接在系統(tǒng)磁盤中找到對(duì)應(yīng)的保存文件進(jìn)行瀏覽,方

便查看數(shù)據(jù)。

2.3.3可視化技術(shù)

數(shù)據(jù)可視化是一種將龐雜抽象的數(shù)據(jù)轉(zhuǎn)化為直觀易懂的圖形的數(shù)據(jù)呈現(xiàn)技

術(shù),它能幫助我們快速把握數(shù)據(jù)的分布和規(guī)律,更加輕松地理解和探索信息。

在當(dāng)今這個(gè)信息爆炸的時(shí)代,數(shù)據(jù)可視化越來(lái)越受重視。

本次項(xiàng)目中是將得到的數(shù)據(jù)用很簡(jiǎn)單的可視化手段實(shí)現(xiàn)數(shù)據(jù)可視化,具體

6

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

的就是用python第三方庫(kù)matpoltlab進(jìn)行可視化,matplotlab中包含了許多庫(kù),分

別對(duì)應(yīng)餅圖、條形圖、直方圖、折線圖等圖形,可以很好的將數(shù)據(jù)高效率的表現(xiàn)

出來(lái),可視化圖形呈現(xiàn)出來(lái)后對(duì)于結(jié)果自然一目了然,這樣既方便了他人觀看,

也方便自己對(duì)數(shù)據(jù)結(jié)果進(jìn)行分析得出結(jié)論。

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

3.1采集頁(yè)面分析

首先打開(kāi)谷歌瀏覽器,然后通過(guò)網(wǎng)址/搜索淘寶的官

方網(wǎng)頁(yè),其次在搜索欄輸入家中常備藥,可以看到家中常備藥的商品銷售信息,

如價(jià)格、銷量、藥品名稱等,我將爬取15頁(yè)的數(shù)據(jù)信息來(lái)進(jìn)行數(shù)據(jù)分析與展示,

如圖3-1所示。

圖3-1淘寶網(wǎng)搜索家中常備藥頁(yè)面

7

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

3.2字段分析

打開(kāi)家中常備藥品頁(yè)面之后發(fā)現(xiàn)每一件商品的信息包括商品價(jià)格,購(gòu)買人

數(shù),商品名稱,店鋪名稱等,打開(kāi)網(wǎng)頁(yè)源代碼也發(fā)現(xiàn)數(shù)據(jù)都在里面,這些數(shù)據(jù)

都是項(xiàng)目所需數(shù)據(jù),將爬取的也都是這些字段,如圖3-2所示。

圖3-2數(shù)據(jù)字段頁(yè)面

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

第一步:導(dǎo)入所需庫(kù)。

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

第二步:定義函數(shù)items_data來(lái)爬取商品名字,商品價(jià)格,付款人數(shù)以及店

鋪名稱。

8

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

圖3-4定義函數(shù)items_data頁(yè)面

第三步:創(chuàng)建瀏覽器并進(jìn)入瀏覽器,使用selenium+cookies方式設(shè)置免密登

錄,再設(shè)置循環(huán)爬取15頁(yè)數(shù)據(jù)內(nèi)容。

圖3-5操作瀏覽器頁(yè)面

圖3-6設(shè)置免密登錄頁(yè)面

9

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

圖3-7循環(huán)爬取15頁(yè)數(shù)據(jù)頁(yè)面

第四步:存儲(chǔ)數(shù)據(jù),將存儲(chǔ)的文件格式轉(zhuǎn)換為CSV文件格式。

圖3-8存儲(chǔ)數(shù)據(jù)頁(yè)面

具體爬取數(shù)據(jù)代碼如下。

importcsv

importtime

importjson

importrandom

fromseleniumimportwebdriver

frommon.byimportBy

defitems_data():

divs=driver.find_elements(By.XPATH,'//div[@class="gridg-clearfix"]/div/div')#所有的div

標(biāo)簽

fordivindivs:

item_name=div.find_element(By.XPATH,'.//div[@class="rowrow-2title"]/a').text#

商品名字

price=div.find_element(By.XPATH,'.//strong').text+'元'#商品價(jià)格

deal=div.find_element(By.XPATH,'.//div[@class="deal-cnt"]').text#付款人數(shù)

name=div.find_element(By.XPATH,'.//div[@class="shop"]/a/span[2]').text#店鋪名

#定義一個(gè)字典存儲(chǔ)數(shù)據(jù)

data_dic={}

data_dic["item_name"]=item_name

data_dic["price"]=price

data_dic["deal"]=deal

10

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

data_dic["name"]=name

data_list.append(data_dic)

if__name__=='__main__':

#1、創(chuàng)建瀏覽器

driver=webdriver.Chrome()

#2、操作瀏覽器

driver.get('/')

driver.implicitly_wait(5)#智能化等待方法

driver.maximize_window()#最大化

time.sleep(random.randint(1,5))#再等待幾秒之后進(jìn)行免密登錄

#3、免密登錄

driver.delete_all_cookies()

withopen('taobao_cookies.json','r',encoding='utf-8')asf:

cookies=json.load(f)

forcookieincookies:

driver.add_cookie(

{

"domain":".",

"name":cookie['name'],

"path":"/",

"value":cookie['value']

}

)

driver.get('/')

#4、輸入關(guān)鍵字進(jìn)行搜索

driver.find_element(By.XPATH,'//*[@id="q"]').send_keys('家中常備藥')

time.sleep(random.randint(1,5))

driver.find_element(By.XPATH,'//*[@id="J_TSearchForm"]/div[1]/button').click()#點(diǎn)擊搜

time.sleep(random.randint(1,5))

data_list=[]#定義一個(gè)空列表用來(lái)存儲(chǔ)所有的數(shù)據(jù)

#5、循環(huán)爬取15頁(yè)數(shù)據(jù)

forpageinrange(0,15):

items_data()#調(diào)用函數(shù)

#點(diǎn)擊下一頁(yè)

driver.find_element(By.XPATH,'//li[@class="itemnext"]/a[@class="J_Ajaxnum

icon-tag"]').click()

time.sleep(random.randint(2,5))

print(data_list)#打印出所有數(shù)據(jù)

#print(len(data_list))#打印出數(shù)據(jù)條數(shù)

#6、保存數(shù)據(jù)

withopen("taobao_data.json","w",encoding='utf-8')asf:

11

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

f.write(json.dumps(data_list,ensure_ascii=False,indent=4))

#7、將json格式的文件轉(zhuǎn)換為CSV格式的文件

withopen('taobao_data.csv','w',encoding='utf-8',newline='')asf2:

title=data_list[0].keys()

write=csv.DictWriter(f2,title)

write.writeheader()

write.writerows(data_list)

具體使用selenium+cookies方式設(shè)置免密登錄代碼如下。

#1.存儲(chǔ)cookies

fromseleniumimportwebdriver

fromselenium.webdriver.support.uiimportWebDriverWait

fromselenium.webdriver.supportimportexpected_conditionsasEC

frommon.byimportBy

importjson

driver=webdriver.Chrome()

driver.get('/')

wait=WebDriverWait(driver,15)

driver.maximize_window()

_login=wait.until(EC.presence_of_element_located(

(By.CSS_SELECTOR,'#J_SiteNavLogin>div.site-nav-menu-hd>div.site-nav-sign>a.h')))

_login.click()

_erweima=wait.until(EC.presence_of_element_located(

(By.CSS_SELECTOR,'#login>div.corner-icon-view.view-type-qrcode>i')))

_erweima.click()

wait.until(EC.presence_of_element_located(

(By.CSS_SELECTOR,'#J_SiteNavLogin>div.site-nav-menu-hd>div.site-nav-user>a')))

cookies=driver.get_cookies()

print(type(cookies))

print(cookies)

withopen('taobao_cookies.json','w',encoding='utf-8')asf:

json.dump(cookies,f,ensure_ascii=False,indent=4)

12

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

圖3-9存儲(chǔ)cookie代碼頁(yè)面

圖3-10存儲(chǔ)cookie代碼頁(yè)面

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

進(jìn)行完數(shù)據(jù)采集之后需要對(duì)數(shù)據(jù)進(jìn)行預(yù)處理,也就是所謂的清洗和檢查。

確定爬取過(guò)來(lái)的數(shù)據(jù)是否存在無(wú)效值和缺失值,要保證數(shù)據(jù)的一致性,本次項(xiàng)

目中需將爬下來(lái)的數(shù)據(jù)和網(wǎng)頁(yè)原數(shù)據(jù)進(jìn)行比對(duì),并且檢查是否出現(xiàn)空值、錯(cuò)值,

無(wú)效的數(shù)據(jù),還有數(shù)據(jù)的位置是否正確。根據(jù)不同的需求要對(duì)數(shù)據(jù)進(jìn)行不同的

處理。

13

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

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

4.1.1原始數(shù)據(jù)格式

圖4-1數(shù)據(jù)清洗準(zhǔn)備頁(yè)面

4.1.2過(guò)程分析與代碼展示

經(jīng)過(guò)比對(duì)和檢查,發(fā)現(xiàn)數(shù)據(jù)不存在缺失,錯(cuò)位,但是有空值和不需要的數(shù)

據(jù)條,例如藥品收納箱的數(shù)據(jù),還有一些無(wú)效字段,例如字段“+人付款”,

“元”等,那么我根據(jù)需求將有效數(shù)據(jù)統(tǒng)一規(guī)劃,去掉不需要的行列數(shù)據(jù),只

需保留需要的數(shù)據(jù),具體步驟如下。

第一步:讀取csv文件,代碼如下。

importpandasaspd

file=open(r'C:\Users\Administrator\Desktop\taobao_data.csv',encoding='utf-8')

df=pd.read_csv(file)

df2=pd.DataFrame(df)

df2

第二步:刪除字段“元”以及“+人付款”,代碼如下。

df2['price']=df2['price'].apply(lambdax:x[:-1])

df2

df2['deal']=df2['deal'].str.replace('[+]','',regex=True)

df2

df2['deal']=df2['deal'].str.replace('人付款','')

14

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

df2

第三步:將‘萬(wàn)’改為‘0000’,刪除含“收納箱”的無(wú)用數(shù)據(jù)條,代碼

如下。

df2['deal']=df2['deal'].str.replace('萬(wàn)','0000')

df2

df3=df2.drop(df2[df2['item_name'].str.contains(pat='收納',regex=False)].index,inplace=True)#刪

除含有“收納”二字的行

df3

df4=df2.drop(df2[df2['item_name'].str.contains(pat='箱',regex=False)].index,inplace=True)#刪除

含有“箱”二字的行

df4

第四步:刪除空值,重置索引,代碼如下。

df2=df2.dropna()

df2

df2=df2.reset_index(drop=True)

df2

最終數(shù)據(jù)清洗的結(jié)果如下。

圖4-2數(shù)據(jù)清洗完成界面

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

數(shù)據(jù)儲(chǔ)存得方法有很多種,本項(xiàng)目我用到的是to_csv方法,文件名為

result.csv,如圖4-3所示:

15

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

圖4-3數(shù)據(jù)存儲(chǔ)為csv頁(yè)面

部分結(jié)果如圖所示。

圖4-4csv文件數(shù)據(jù)展示頁(yè)面

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

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

導(dǎo)入pandas庫(kù),導(dǎo)入相關(guān)matplotlib第三方庫(kù)等,設(shè)置字體類型,使用pandas

加載源數(shù)據(jù),如圖5-1所示。

16

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

圖5-1導(dǎo)入數(shù)據(jù)代碼頁(yè)面

圖5-2數(shù)據(jù)準(zhǔn)備頁(yè)面

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

5.2.1統(tǒng)計(jì)店鋪出現(xiàn)次數(shù)排名top20的店鋪名稱

圖5-3代碼頁(yè)面

17

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

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

將在csv文件中店鋪名稱(name)字段的數(shù)據(jù)進(jìn)行降序排序,然后取出排名前

20的網(wǎng)店名稱數(shù)據(jù)生成條形圖,如圖5-4中可以看出阿里健康大藥房在過(guò)去一個(gè)

月內(nèi)出現(xiàn)的頻率最高,其次就是瑞康大藥房旗艦店和優(yōu)德大藥房旗艦店。談到網(wǎng)

上購(gòu)藥一般人們的第一選擇就是去阿里健康大藥房旗艦店購(gòu)買,可能因?yàn)樵撈?/p>

艦店的家中常備藥品齊全,而且價(jià)格實(shí)惠,售后服務(wù)好,值得信賴,畢竟用藥

直接關(guān)系個(gè)人生命健康,大家還是比較小心和在意。但依此數(shù)據(jù),我們也可以

得知,瑞康大藥房旗艦店和優(yōu)德大藥房旗艦店也是不錯(cuò)的選擇,特別是在此次

疫情中購(gòu)藥難的情況下,阿里健康大藥房也會(huì)存在供不應(yīng)求的狀況,此外,這

兩個(gè)旗艦店在淘寶網(wǎng)站上的家中常備藥網(wǎng)頁(yè)中出現(xiàn)多次,說(shuō)明它們旗艦店的質(zhì)

量,口碑也是值得大家去信賴的。同時(shí),排名最高的阿里健康大藥房以及阿里

健康醫(yī)藥旗艦店一共達(dá)到了34次,也就是說(shuō)人們購(gòu)買的大部分的藥品都來(lái)自阿

里健康大藥房。

所以依此圖來(lái)看,人們對(duì)用阿里健康大藥房旗艦店的依賴性還是比較高的,

所以人們一定要對(duì)日常用藥進(jìn)行儲(chǔ)備,相應(yīng)的企業(yè)也要根據(jù)實(shí)時(shí)數(shù)據(jù),備好一

18

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

定的藥品庫(kù)存量。

5.2.2依據(jù)商品銷量進(jìn)行統(tǒng)計(jì)排名top20的商品名稱

圖5-5代碼頁(yè)面

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

將在csv文件中銷量(deal)字段的數(shù)據(jù)進(jìn)行降序排序,然后取出排名前20的

19

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

商品名稱數(shù)據(jù)生成條形圖,如圖5-5中可以看出益生菌粉,康恩貝腸炎寧片,云

南白藥創(chuàng)口貼,葵花退熱貼以及布洛芬適緩膠囊等商品在過(guò)去一個(gè)月內(nèi)的銷量

都比較高,總的來(lái)看,主要有維生素類藥品,治療皮膚類的藥品,治療跌打損傷

類的藥品,治療腸炎調(diào)理腸胃類的藥品,以及治療清熱上火感冒退燒類的藥品

等。這些僅僅是所有數(shù)據(jù)中銷量排名前20的商品,排名在后面商品銷量都不是

很高,足以說(shuō)明人們?nèi)粘I钪袑?duì)這幾類的藥品需求量還是比較高的,大部分

人日常生活中也是用的到的,而不會(huì)說(shuō)存在閑置的情況。

所以,人們可以根據(jù)這種現(xiàn)狀多備用一些類似的藥品,從個(gè)人來(lái)說(shuō)面臨疾

病時(shí)可以及時(shí)用藥抵抗病毒擴(kuò)展,從國(guó)家來(lái)說(shuō)面對(duì)重大傳染病時(shí)可以減少供給

壓力與人口死亡率。

5.2.3依據(jù)價(jià)格與銷量數(shù)據(jù)分析其關(guān)系

圖5-7代碼頁(yè)面

20

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

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

根據(jù)銷量(deal)和價(jià)格字段生成它們之間關(guān)系的雙變量關(guān)系圖,如圖5-8,從

圖中可以看出價(jià)格在0元-60元左右銷量是最高的,這說(shuō)明,對(duì)于大部分人來(lái)說(shuō),

家中常備藥的藥品價(jià)格在這區(qū)間內(nèi)是合理且能夠被接受的,而價(jià)格在150-400區(qū)

間內(nèi)幾乎沒(méi)有人愿意購(gòu)買,因此如果家中常備藥品的價(jià)格過(guò)高,則購(gòu)買人數(shù)就

會(huì)與之成反比關(guān)系,即使人們看

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論