版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
目錄
1引言1
1.1項目背景1
1.2開發(fā)環(huán)境與工具2
1.2.1Python簡介2
1.2.2Pycharm簡介2
1.2.3JupyterNotebook簡介3
1.2.4Python第三方庫簡介3
1.2.5谷歌瀏覽器簡介4
2需求分析4
2.1可行性需求分析4
2.2采集目標(biāo)功能分析5
2.3關(guān)鍵技術(shù)分析6
2.3.1網(wǎng)絡(luò)爬蟲技術(shù)6
2.3.2文件存取技術(shù)6
2.3.3可視化技術(shù)6
3數(shù)據(jù)采集7
3.1采集頁面分析7
3.2字段分析8
3.3編程實現(xiàn)8
4數(shù)據(jù)清洗與處理13
4.1數(shù)據(jù)清洗14
4.1.1原始數(shù)據(jù)格式14
4.1.2過程分析與代碼展示14
4.2數(shù)據(jù)儲存15
5數(shù)據(jù)統(tǒng)計與分析16
5.1數(shù)據(jù)準(zhǔn)備16
5.2數(shù)據(jù)展示17
I
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
5.2.1統(tǒng)計店鋪出現(xiàn)次數(shù)排名top20的店鋪名稱17
5.2.2依據(jù)商品銷量進行統(tǒng)計排名top20的商品名稱19
5.2.3依據(jù)價格與銷量數(shù)據(jù)分析其關(guān)系20
5.3數(shù)據(jù)分析22
6小結(jié)22
參考資料23
II
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
淘寶網(wǎng)家中常備藥品的商品數(shù)據(jù)采集與分析
1引言
從18世紀的蒸汽革命到19世紀的電氣革命再到20世紀的信息革命,隨著
時代的不斷進步和社會的快速發(fā)展,互聯(lián)網(wǎng)已成為人們?nèi)粘I钪胁豢苫蛉钡?/p>
一部分。計算機互聯(lián)網(wǎng)技術(shù)在當(dāng)下為百姓民生的各個方面提供了智能生活的技
術(shù)基礎(chǔ),提高了人們的幸福感和滿足感,人們對互聯(lián)網(wǎng)行業(yè)的需求日益擴大,
互聯(lián)網(wǎng)在方便人們生活的同時,各行各業(yè)的人們也利用互聯(lián)網(wǎng)方便、快捷的特
點,為企業(yè)或者個人在這個網(wǎng)絡(luò)大數(shù)據(jù)環(huán)境下創(chuàng)造出更高的利潤價值。廣大人民
群眾的日常消費、出行等產(chǎn)生的數(shù)據(jù)為技術(shù)工作者提供了海量的數(shù)據(jù)源頭,讓我
們在這個行業(yè)領(lǐng)域內(nèi)不斷尋找新的資源,創(chuàng)造新的價值,推動互聯(lián)網(wǎng)的不斷更
迭。淘寶網(wǎng)家中常備藥品商品數(shù)據(jù)采集與分析是一項對淘寶網(wǎng)上家庭健康領(lǐng)域
的商品數(shù)據(jù)進行收集和處理的工作。通過該工作,可以獲得關(guān)于家庭用藥的商
品詳細信息(如銷售情況、價格等),并將這些信息整合起來以便進一步分析,
最終得出有實際價值意義的結(jié)論。
1.1項目背景
現(xiàn)如今,即使我們已經(jīng)實現(xiàn)了全面脫貧和全面建成小康社會的目標(biāo),但以
人為本的核心未變,醫(yī)療行業(yè)仍是百姓以及國家關(guān)注的重點,新冠肺炎從2019
年12月份到現(xiàn)如今一直影響著人們的日常生活,不僅威脅個人生命健康還對日
常工作出行等方面產(chǎn)生較大影響,國家不斷推行免費核酸活動,公共基礎(chǔ)設(shè)施
建設(shè),宣揚共同抗擊疫情等等工作,來盡量規(guī)避新冠對人們帶來的負面影響,
與此同時,大數(shù)據(jù)技術(shù),互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展也為我們抗擊疫情做了很大的
貢獻,如健康碼,行程碼都出自大數(shù)據(jù)技術(shù)。到了2022年下半年,病毒的攻擊
力相對減弱,國家決定實行一定程度的放寬政策,但隨之而來的是很多人都感
染新冠,因為奧密克戎這類病毒的傳染能力比較強,所以導(dǎo)致感染范圍廣,面
積大,很多家庭沒有備用抗病毒藥品的習(xí)慣,再加上藥店的儲備資源沒有那么
多,所以出現(xiàn)了購藥難,購藥貴的情況,很多年輕人靠自身強大的身體素質(zhì)抵
抗病毒,而老年人和小孩因為自身抵抗力不足而備受折磨。到現(xiàn)如今,人們受
疫情的影響已經(jīng)逐漸減少,但疫情還沒有完全過去,也為了預(yù)防日后類似的流
感病毒出現(xiàn),為了更好地守護個人以及家人的健康,加強自身免疫力的同時,
1
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
個人以及網(wǎng)店對各類日常所需藥品進行預(yù)備是很有必要的。
我的項目就是針對人們在感染新冠高潮期間大量購買家中常備藥品的這一
現(xiàn)狀,爬取淘寶網(wǎng)站人們購買各類日常必備藥品的數(shù)據(jù),對其進行處理,分析,進而
可視化。通過對繁雜的數(shù)據(jù)經(jīng)過清洗加分析可以得出人們購買的最多的家中常
備藥品是哪些,每一類的藥品購買數(shù)量有多少,以及哪些網(wǎng)店的家中常備藥品
月銷量最高,所以我的項目包含數(shù)據(jù)采集、數(shù)據(jù)處理、數(shù)據(jù)分析與存儲以及數(shù)
據(jù)可視化部分。
1.2開發(fā)環(huán)境與工具
由于這個項目涉及抗病毒藥品的數(shù)據(jù)采集,分析與統(tǒng)計,存儲,以及數(shù)據(jù)
可視化圖表呈現(xiàn),所以要用到的技術(shù)包括Python爬蟲技術(shù),數(shù)據(jù)預(yù)處理技術(shù),
可視化技術(shù),所用到的開發(fā)工具包括Pycharm、JupyterNotebook、第三方庫、瀏
覽器GoogleChrome。
1.2.1Python簡介
python是一種高級編程語言,由荷蘭程序員guidovanrossum在1991年創(chuàng)
建。python語言具備簡單、易讀、易維護的特點,被廣泛應(yīng)用于數(shù)據(jù)科學(xué)、機
器學(xué)習(xí)、人工智能、web開發(fā)等領(lǐng)域。與其他編程語言相比,python優(yōu)勢在于以
下幾點:
1、程序簡潔易讀:python程序結(jié)構(gòu)清晰,語法簡單易懂,代碼量相對較少。
2、多態(tài)性:支持多種編程風(fēng)格和范式,包括面向過程、面向?qū)ο蟆⒑瘮?shù)式
編程等。
3、強大的標(biāo)準(zhǔn)庫:python內(nèi)置了許多強大且易用的庫,如numpy、pandas
和matplotlib等.
4、跨平臺性:python程序不需要經(jīng)過特別定制就可以運行在Unix、Windows
和MacOS等操作系統(tǒng)上。
直至2022年7月份,根據(jù)TIOBE排行榜的顯示,Python依然占據(jù)第1名
的位置,并且市場份額仍在持續(xù)提升。
1.2.2Pycharm簡介
pycharm是一款由Jetbrains開發(fā)的python集成開發(fā)環(huán)境(integrated
developmentenvironment,簡稱IDE),它旨在提供全面的python開發(fā)工具,為
編程人員提供更方便、高效的開發(fā)體驗。pycharm擁有豐富的編輯器功能,如語
2
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
法檢查、代碼補全、重構(gòu)、調(diào)試和測試等,能夠幫助開發(fā)者編寫高質(zhì)量的python
代碼。同時,pycharm還支持多種框架和庫,比如django、flask等,提供完整的
開發(fā)環(huán)境,方便開發(fā)web應(yīng)用程序。pycharm跨平臺支持Windows、蘋果OSX
和Linux操作系統(tǒng),具有兩個版本,community版是免費的,professional版需要
購買并提供更強大的功能和工具。pycharm是一個優(yōu)秀的python開發(fā)工具,可
大幅提高開發(fā)速度和效率。
1.2.3JupyterNotebook簡介
JupyterNotebook是一種基于web的交互式計算環(huán)境,它可以將可執(zhí)行代碼、
數(shù)學(xué)公式、圖像和文本等元素組合在一個文檔中,方便用戶進行數(shù)據(jù)分析、機
器學(xué)習(xí)等任務(wù)。JupyterNotebook具有如下特點:
1、語言支持廣泛:JupyterNotebook可以支持包括Python、R、Julia等在內(nèi)
的多種編程語言。
2、交互式計算:用戶可以通過修改代碼或輸入?yún)?shù)等方式與計算結(jié)果互動。
3、可視化呈現(xiàn):JupyterNotebooks支持豐富的數(shù)據(jù)可視化功能,用戶可以
直接在notebook文檔中展示圖形、表格等信息。
4、易共享和復(fù)用:由于JupyterNotebook是一個文件,用戶可以輕松分享
自己的工作成果,別人可以快速了解到分析步驟并進行修改。
5、強大的插件系統(tǒng):用戶可以通過插件系統(tǒng)提高notebook的使用效率,減
少重復(fù)性勞動。
總之,JupyterNotebook是數(shù)據(jù)科學(xué)家和研究人員常用的工具之一,因為它
能夠幫助他們更好地進行實驗和探索,并迅速地交流結(jié)果。
1.2.4Python第三方庫簡介
requests:最友好的網(wǎng)絡(luò)爬蟲功能庫,是Python中可以用代碼來模擬發(fā)送網(wǎng)
絡(luò)請求,并得到響應(yīng)數(shù)據(jù)的一個第三方庫,使用起來比urllib庫更簡潔。
csv:csv屬于python中的內(nèi)置模塊,它能夠讀取csv格式的文件或者將數(shù)據(jù)
存入到csv表格中。并且csv文件是表格和數(shù)據(jù)庫中常見的文件操作格式。
random:random庫用于生成偽隨機數(shù),是一個標(biāo)準(zhǔn)庫。
time:time庫是python中處理時間的標(biāo)準(zhǔn)庫,主要有計算機時間表達、獲
取系統(tǒng)時間并格式化、提供系統(tǒng)級精確計時等功能。
selenium:selenium庫是一個自動化測試工具,利用它可以驅(qū)動瀏覽器執(zhí)行
特定的動作,如點擊、下拉等操作,同時還可以獲取瀏覽器當(dāng)前呈現(xiàn)的頁面的
3
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
源代碼,做到可見即可爬。同時使用selenium+cookies方式可以實現(xiàn)免密登錄來
爬取數(shù)據(jù)。
pandas:pandas庫是一個免費開源的第三方Python庫,其基于numpy庫開
發(fā)而來,提供了兩種數(shù)據(jù)結(jié)構(gòu),Series與DataFrame,這兩種數(shù)據(jù)結(jié)構(gòu)極大地增
強的了Pandas的數(shù)據(jù)分析能力。
seaborn:seaborn庫是基于matplotlib的數(shù)據(jù)集分布可視化庫。它在
matplotlib的基礎(chǔ)上,進行了更高級的封裝,從而使得繪圖更加容易,不需要經(jīng)過大
量的調(diào)整,就能使圖像變得精致。
matplotlib:繪圖庫,主要是偏向于二維繪圖包括折線圖、條形圖、扇形圖、
散點圖、直方圖等等。
1.2.5谷歌瀏覽器簡介
GoogleChrome是一款由Google公司開發(fā)的網(wǎng)頁瀏覽器,該瀏覽器是一款
開源軟件,目標(biāo)是提升穩(wěn)定性、速度和安全性,并創(chuàng)造出簡單且有效率的使用
者界面。大部分人選擇使用谷歌瀏覽器爬蟲有以下幾個原因:
1、內(nèi)核:國產(chǎn)的瀏覽器基本都是Chrome內(nèi)核,包括現(xiàn)在微軟的edge也開
始用Chrome內(nèi)核。web前端測試或者解決bug用Chrome可以保證大多數(shù)人正
常使用。
2、插件:Chrome應(yīng)用商店,基本上想要的插件都能搜索到。程序員常常要
瀏覽國外的英文站點,谷歌的翻譯插件真的很有幫助。
3、f12:Web無論是前后端開發(fā)應(yīng)該都會用到Chrome開發(fā)者工具,可以稱
之為神器,js下斷點,查看后端響應(yīng)數(shù)據(jù)等等都很實用。除了開發(fā),平常如果網(wǎng)
站有什么限制,比如不準(zhǔn)復(fù)制文字,不準(zhǔn)下載圖片,都可以用F12繞過。
2需求分析
2.1可行性需求分析
1、技術(shù)可行性
在淘寶網(wǎng)家庭常備藥品商品數(shù)據(jù)采集與分析項目中,技術(shù)可行性是非常重
要的。主要包含以下幾個方面:
數(shù)據(jù)采集:淘寶網(wǎng)作為一個大型電商平臺,提供了多種數(shù)據(jù)獲取方式,包
括網(wǎng)頁抓取、API調(diào)用等。這里通過Python編程語言來編寫爬蟲程序,利用HTTP
請求和解析HTML等技術(shù)獲取淘寶網(wǎng)上相關(guān)數(shù)據(jù),為了突破淘寶對爬蟲的反爬
4
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
機制,采用一些技巧,如設(shè)置請求頭部信息、IP代理池等。
數(shù)據(jù)清洗:采集到的數(shù)據(jù)可能存在重復(fù)、錯亂、格式異常等問題,需要進
行數(shù)據(jù)清洗和預(yù)處理。通過Jupyternotebook可以及時準(zhǔn)確地清洗數(shù)據(jù)。
數(shù)據(jù)存儲:由于數(shù)據(jù)量較大,需要對數(shù)據(jù)進行存儲和管理。選擇存儲為csv
文件既確保了數(shù)據(jù)的安全性又易于讀取應(yīng)用。
數(shù)據(jù)統(tǒng)計與分析:最后需要將分析結(jié)果以圖表形式呈現(xiàn)出來,這里采用了
python中的多個可視化工具,使得代碼簡潔清晰。
2、項目可行性
教育、住房、醫(yī)療一直是壓在人民心頭的三座大山,也是我們中國社會主義
發(fā)展道路上的巨大難題,不僅國家,百姓個人也尤為關(guān)注醫(yī)療方面。同時隨著
互聯(lián)網(wǎng)的發(fā)展,網(wǎng)上購物的群眾數(shù)量逐年遞增,人們越來越熱衷于網(wǎng)上購物,
此次疫情爆發(fā),受出行等因素限制,很多人都通過網(wǎng)上購買藥品來抵抗疫情。
本設(shè)計通過采集大型購物網(wǎng)站淘寶網(wǎng)網(wǎng)站內(nèi)的數(shù)據(jù),分析人們購買日常必備
藥品的商品數(shù)據(jù)信息。采集出來的數(shù)據(jù)真實有效,進行處理分析之后將其可視
化,可以清晰的知道人們認可的購買多的家中常備藥品的種類主要有哪些,以
及每一類的藥品銷量是多少,哪些網(wǎng)站的銷量最高以及網(wǎng)上藥店是否需要擴大
儲備量來滿足人們的需求和擴大自身利益。
2.2采集目標(biāo)功能分析
淘寶網(wǎng)是阿里巴巴集團旗下的一個在線購物平臺,成立于2003年。它是中
國規(guī)模最大、用戶數(shù)量最多的在線零售平臺之一,提供各種類別的商品,如服
裝、鞋子、家居、食品等。根據(jù)2019年第三季度的數(shù)據(jù),淘寶網(wǎng)占據(jù)中國電商
市場約58%的份額,是中國最大的電子商務(wù)平臺之一。同時,淘寶網(wǎng)也是全球
銷售量最高的電商平臺之一,與阿里巴巴集團旗下的天貓共同主導(dǎo)了中國的電
商市場。截至目前,淘寶網(wǎng)的用戶規(guī)模已經(jīng)超過6億人,服務(wù)范圍涵蓋了全國
各個地區(qū)和行業(yè)。隨著移動互聯(lián)網(wǎng)的發(fā)展,淘寶網(wǎng)也逐漸從pc端向移動端轉(zhuǎn)型,
目前移動端訪問量已經(jīng)超過了pc端訪問量的一半。
總體來說,淘寶網(wǎng)在中國電商市場上的地位十分重要,具有非常大的影響
力和市場話語權(quán)。之所以選擇將淘寶作為數(shù)據(jù)采集的平臺是因為其龐大的數(shù)據(jù),
而對家中常備藥品進行數(shù)據(jù)采集與分析是因為人們的日常生活離不開這些藥制
品,選擇他可以真實的反映家中常備藥的商品種類和銷售數(shù)量以及銷量不同的
網(wǎng)店信息。
5
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
2.3關(guān)鍵技術(shù)分析
2.3.1網(wǎng)絡(luò)爬蟲技術(shù)
網(wǎng)絡(luò)爬蟲技術(shù)(webcrawling)是指使用計算機程序自動地獲取互聯(lián)網(wǎng)上的
特定信息,例如網(wǎng)頁、圖片、視頻、音頻等資源。網(wǎng)絡(luò)爬蟲開發(fā)的語言有很多,
比如說PHP、Go、C++、Java、Python等,不同的語言有不同的優(yōu)缺點,而我選
擇用Python做為實現(xiàn)爬蟲的語言,主要有以下因素:
首先相比其他動態(tài)腳本語言,Python語言模塊豐富,提供了豐富的內(nèi)置模
塊、第三方模塊,以及成熟的網(wǎng)絡(luò)爬蟲框架,能夠快速實現(xiàn)網(wǎng)絡(luò)爬蟲的基本功
能,比如說request庫以及selenium庫。
其次Python語法簡潔,對于同一個功能,使用Python只需要編寫幾十行代
碼,而使用Java可能需要編寫幾百行代碼。另外開發(fā)效率也非常高,相比較其
他語言而言我更熟悉python語言。
2.3.2文件存取技術(shù)
python中的文件存儲技術(shù)有很多種,如json,CSV,MySQL數(shù)據(jù)庫,Redis
數(shù)據(jù)庫,Mongdb數(shù)據(jù)庫等,其中各有各的優(yōu)點與缺點,其中json格式和CSV
文件存儲操作簡單方便,也是我在日常中用的最多的,故在此設(shè)計中我用json
格式和CSV文件存儲這種方式,同時他們也有各自的優(yōu)點。
1、使用json格式存儲:它是一種可以對數(shù)據(jù)進行交換的格式,對數(shù)據(jù)的表
示是使用的是獨立的編程語言,對數(shù)據(jù)的存儲是采用的文本格式,可以很好解
決Python2和Python3版本的編碼問題,數(shù)據(jù)內(nèi)容的結(jié)構(gòu)上會有點像Python中
的字典和列表,層次清晰,可以方便閱讀和理解,同時還可以讓Python解釋器
對文件進行解析和生成,有效的提高了開發(fā)傳輸?shù)男省?/p>
2、csv文件:csv文件就像是我們平時使用的excel文件,如果將數(shù)據(jù)存儲
為csv文件的話,我們可以直接在系統(tǒng)磁盤中找到對應(yīng)的保存文件進行瀏覽,方
便查看數(shù)據(jù)。
2.3.3可視化技術(shù)
數(shù)據(jù)可視化是一種將龐雜抽象的數(shù)據(jù)轉(zhuǎn)化為直觀易懂的圖形的數(shù)據(jù)呈現(xiàn)技
術(shù),它能幫助我們快速把握數(shù)據(jù)的分布和規(guī)律,更加輕松地理解和探索信息。
在當(dāng)今這個信息爆炸的時代,數(shù)據(jù)可視化越來越受重視。
本次項目中是將得到的數(shù)據(jù)用很簡單的可視化手段實現(xiàn)數(shù)據(jù)可視化,具體
6
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
的就是用python第三方庫matpoltlab進行可視化,matplotlab中包含了許多庫,分
別對應(yīng)餅圖、條形圖、直方圖、折線圖等圖形,可以很好的將數(shù)據(jù)高效率的表現(xiàn)
出來,可視化圖形呈現(xiàn)出來后對于結(jié)果自然一目了然,這樣既方便了他人觀看,
也方便自己對數(shù)據(jù)結(jié)果進行分析得出結(jié)論。
3數(shù)據(jù)采集
3.1采集頁面分析
首先打開谷歌瀏覽器,然后通過網(wǎng)址/搜索淘寶的官
方網(wǎng)頁,其次在搜索欄輸入家中常備藥,可以看到家中常備藥的商品銷售信息,
如價格、銷量、藥品名稱等,我將爬取15頁的數(shù)據(jù)信息來進行數(shù)據(jù)分析與展示,
如圖3-1所示。
圖3-1淘寶網(wǎng)搜索家中常備藥頁面
7
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
3.2字段分析
打開家中常備藥品頁面之后發(fā)現(xiàn)每一件商品的信息包括商品價格,購買人
數(shù),商品名稱,店鋪名稱等,打開網(wǎng)頁源代碼也發(fā)現(xiàn)數(shù)據(jù)都在里面,這些數(shù)據(jù)
都是項目所需數(shù)據(jù),將爬取的也都是這些字段,如圖3-2所示。
圖3-2數(shù)據(jù)字段頁面
3.3編程實現(xiàn)
第一步:導(dǎo)入所需庫。
圖3-3導(dǎo)入庫頁面
第二步:定義函數(shù)items_data來爬取商品名字,商品價格,付款人數(shù)以及店
鋪名稱。
8
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
圖3-4定義函數(shù)items_data頁面
第三步:創(chuàng)建瀏覽器并進入瀏覽器,使用selenium+cookies方式設(shè)置免密登
錄,再設(shè)置循環(huán)爬取15頁數(shù)據(jù)內(nèi)容。
圖3-5操作瀏覽器頁面
圖3-6設(shè)置免密登錄頁面
9
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
圖3-7循環(huán)爬取15頁數(shù)據(jù)頁面
第四步:存儲數(shù)據(jù),將存儲的文件格式轉(zhuǎn)換為CSV文件格式。
圖3-8存儲數(shù)據(jù)頁面
具體爬取數(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+'元'#商品價格
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#店鋪名
稱
#定義一個字典存儲數(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è)計
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))#再等待幾秒之后進行免密登錄
#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)鍵字進行搜索
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()#點擊搜
索
time.sleep(random.randint(1,5))
data_list=[]#定義一個空列表用來存儲所有的數(shù)據(jù)
#5、循環(huán)爬取15頁數(shù)據(jù)
forpageinrange(0,15):
items_data()#調(diào)用函數(shù)
#點擊下一頁
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è)計
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.存儲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è)計
圖3-9存儲cookie代碼頁面
圖3-10存儲cookie代碼頁面
4數(shù)據(jù)清洗與處理
進行完數(shù)據(jù)采集之后需要對數(shù)據(jù)進行預(yù)處理,也就是所謂的清洗和檢查。
確定爬取過來的數(shù)據(jù)是否存在無效值和缺失值,要保證數(shù)據(jù)的一致性,本次項
目中需將爬下來的數(shù)據(jù)和網(wǎng)頁原數(shù)據(jù)進行比對,并且檢查是否出現(xiàn)空值、錯值,
無效的數(shù)據(jù),還有數(shù)據(jù)的位置是否正確。根據(jù)不同的需求要對數(shù)據(jù)進行不同的
處理。
13
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
4.1數(shù)據(jù)清洗
4.1.1原始數(shù)據(jù)格式
圖4-1數(shù)據(jù)清洗準(zhǔn)備頁面
4.1.2過程分析與代碼展示
經(jīng)過比對和檢查,發(fā)現(xiàn)數(shù)據(jù)不存在缺失,錯位,但是有空值和不需要的數(shù)
據(jù)條,例如藥品收納箱的數(shù)據(jù),還有一些無效字段,例如字段“+人付款”,
“元”等,那么我根據(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è)計
df2
第三步:將‘萬’改為‘0000’,刪除含“收納箱”的無用數(shù)據(jù)條,代碼
如下。
df2['deal']=df2['deal'].str.replace('萬','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ù)儲存
數(shù)據(jù)儲存得方法有很多種,本項目我用到的是to_csv方法,文件名為
result.csv,如圖4-3所示:
15
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
圖4-3數(shù)據(jù)存儲為csv頁面
部分結(jié)果如圖所示。
圖4-4csv文件數(shù)據(jù)展示頁面
5數(shù)據(jù)統(tǒng)計與分析
5.1數(shù)據(jù)準(zhǔn)備
導(dǎo)入pandas庫,導(dǎo)入相關(guān)matplotlib第三方庫等,設(shè)置字體類型,使用pandas
加載源數(shù)據(jù),如圖5-1所示。
16
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
圖5-1導(dǎo)入數(shù)據(jù)代碼頁面
圖5-2數(shù)據(jù)準(zhǔn)備頁面
5.2數(shù)據(jù)展示
5.2.1統(tǒng)計店鋪出現(xiàn)次數(shù)排名top20的店鋪名稱
圖5-3代碼頁面
17
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
圖5-4數(shù)據(jù)展示頁面
將在csv文件中店鋪名稱(name)字段的數(shù)據(jù)進行降序排序,然后取出排名前
20的網(wǎng)店名稱數(shù)據(jù)生成條形圖,如圖5-4中可以看出阿里健康大藥房在過去一個
月內(nèi)出現(xiàn)的頻率最高,其次就是瑞康大藥房旗艦店和優(yōu)德大藥房旗艦店。談到網(wǎng)
上購藥一般人們的第一選擇就是去阿里健康大藥房旗艦店購買,可能因為該旗
艦店的家中常備藥品齊全,而且價格實惠,售后服務(wù)好,值得信賴,畢竟用藥
直接關(guān)系個人生命健康,大家還是比較小心和在意。但依此數(shù)據(jù),我們也可以
得知,瑞康大藥房旗艦店和優(yōu)德大藥房旗艦店也是不錯的選擇,特別是在此次
疫情中購藥難的情況下,阿里健康大藥房也會存在供不應(yīng)求的狀況,此外,這
兩個旗艦店在淘寶網(wǎng)站上的家中常備藥網(wǎng)頁中出現(xiàn)多次,說明它們旗艦店的質(zhì)
量,口碑也是值得大家去信賴的。同時,排名最高的阿里健康大藥房以及阿里
健康醫(yī)藥旗艦店一共達到了34次,也就是說人們購買的大部分的藥品都來自阿
里健康大藥房。
所以依此圖來看,人們對用阿里健康大藥房旗艦店的依賴性還是比較高的,
所以人們一定要對日常用藥進行儲備,相應(yīng)的企業(yè)也要根據(jù)實時數(shù)據(jù),備好一
18
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
定的藥品庫存量。
5.2.2依據(jù)商品銷量進行統(tǒng)計排名top20的商品名稱
圖5-5代碼頁面
圖5-6數(shù)據(jù)展示頁面
將在csv文件中銷量(deal)字段的數(shù)據(jù)進行降序排序,然后取出排名前20的
19
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
商品名稱數(shù)據(jù)生成條形圖,如圖5-5中可以看出益生菌粉,康恩貝腸炎寧片,云
南白藥創(chuàng)口貼,葵花退熱貼以及布洛芬適緩膠囊等商品在過去一個月內(nèi)的銷量
都比較高,總的來看,主要有維生素類藥品,治療皮膚類的藥品,治療跌打損傷
類的藥品,治療腸炎調(diào)理腸胃類的藥品,以及治療清熱上火感冒退燒類的藥品
等。這些僅僅是所有數(shù)據(jù)中銷量排名前20的商品,排名在后面商品銷量都不是
很高,足以說明人們?nèi)粘I钪袑@幾類的藥品需求量還是比較高的,大部分
人日常生活中也是用的到的,而不會說存在閑置的情況。
所以,人們可以根據(jù)這種現(xiàn)狀多備用一些類似的藥品,從個人來說面臨疾
病時可以及時用藥抵抗病毒擴展,從國家來說面對重大傳染病時可以減少供給
壓力與人口死亡率。
5.2.3依據(jù)價格與銷量數(shù)據(jù)分析其關(guān)系
圖5-7代碼頁面
20
湖南商務(wù)職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計
圖5-8數(shù)據(jù)展示頁面
根據(jù)銷量(deal)和價格字段生成它們之間關(guān)系的雙變量關(guān)系圖,如圖5-8,從
圖中可以看出價格在0元-60元左右銷量是最高的,這說明,對于大部分人來說,
家中常備藥的藥品價格在這區(qū)間內(nèi)是合理且能夠被接受的,而價格在150-400區(qū)
間內(nèi)幾乎沒有人愿意購買,因此如果家中常備藥品的價格過高,則購買人數(shù)就
會與之成反比關(guān)系,即使人們看
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 拱棚工程施工方案(3篇)
- 致敬英烈-緬懷革命先烈主題班會課件
- 2025年河北省職教高考《職測》核心考點必刷必練試題庫(含答案)
- 《道路交通安全法》知識考試題庫150題(含答案)
- 2025年江西師范高等專科學(xué)校高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 2025年江南影視藝術(shù)職業(yè)學(xué)院高職單招職業(yè)技能測試近5年常考版參考題庫含答案解析
- 專題03 冠詞(第02期) 帶解析
- 2025科學(xué)儀器行業(yè)市場動態(tài)與技術(shù)發(fā)展趨勢
- 無人駕駛與機器人行業(yè)的關(guān)聯(lián)與前景
- 消防設(shè)計工程合同模板
- 中央2025年公安部部分直屬事業(yè)單位招聘84人筆試歷年參考題庫附帶答案詳解
- 三年級數(shù)學(xué)(上)計算題專項練習(xí)附答案
- 中醫(yī)診療方案腎病科
- 2025年安慶港華燃氣限公司招聘工作人員14人高頻重點提升(共500題)附帶答案詳解
- 人教版(2025新版)七年級下冊數(shù)學(xué)第七章 相交線與平行線 單元測試卷(含答案)
- 玩具有害物質(zhì)風(fēng)險評估-洞察分析
- 春節(jié)節(jié)后復(fù)工全員安全意識提升及安全知識培訓(xùn)
- 2024年河南省公務(wù)員錄用考試《行測》真題及答案解析
- 2023年上海鐵路局集團有限公司招聘筆試真題
- 信永中和在線測評85題
評論
0/150
提交評論