基于Python的二手車(chē)之家數(shù)據(jù)采集與分析_第1頁(yè)
基于Python的二手車(chē)之家數(shù)據(jù)采集與分析_第2頁(yè)
基于Python的二手車(chē)之家數(shù)據(jù)采集與分析_第3頁(yè)
基于Python的二手車(chē)之家數(shù)據(jù)采集與分析_第4頁(yè)
基于Python的二手車(chē)之家數(shù)據(jù)采集與分析_第5頁(yè)
已閱讀5頁(yè),還剩21頁(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)境與工具................................................................................................1

1.2.1Python簡(jiǎn)介............................................................................................1

1.2.2Jypyternotebook簡(jiǎn)介........................................................................2

1.2.3Python第三方庫(kù)簡(jiǎn)介............................................................................2

2需求分析.......................................................................................................................3

2.1可行性需求分析................................................................................................3

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

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

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

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

2.3.3可視化技術(shù).............................................................................................5

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

3.1采集頁(yè)面分析....................................................................................................6

3.2字段分析............................................................................................................7

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

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

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

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

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

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

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

5.2.1依據(jù)車(chē)輛產(chǎn)商進(jìn)行統(tǒng)計(jì).......................................................................19

5.2.2依據(jù)車(chē)輛級(jí)別進(jìn)行統(tǒng)計(jì).......................................................................20

I

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

5.2.3依據(jù)車(chē)輛價(jià)格進(jìn)行統(tǒng)計(jì)和分析...........................................................21

5.2.4依據(jù)月份上牌數(shù)量進(jìn)行統(tǒng)計(jì)...............................................................22

5.3綜述..................................................................................................................23

6小結(jié).............................................................................................................................23

參考資料.........................................................................................................................24

II

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

基于Python的二手車(chē)之家數(shù)據(jù)采集與分析

1引言

二手車(chē)市場(chǎng)是一個(gè)龐大的市場(chǎng),而且近年來(lái)在汽車(chē)消費(fèi)趨勢(shì)的影響下,二

手車(chē)交易市場(chǎng)得到了顯著的發(fā)展。由于消費(fèi)者對(duì)于二手車(chē)交易市場(chǎng)的需求日益

增加,因此二手車(chē)交易市場(chǎng)已經(jīng)成為了汽車(chē)行業(yè)中的一個(gè)新興且非常有潛力的

領(lǐng)域。而數(shù)據(jù)采集與分析又是二手車(chē)交易市場(chǎng)中的重要環(huán)節(jié),對(duì)于二手車(chē)交易

市場(chǎng)的發(fā)展起到至關(guān)重要的作用。與此同時(shí),以python為代表的編程語(yǔ)言由于

它的可靠性和易用性,已經(jīng)得到了廣泛的應(yīng)用。本文將采用python作為主要的

應(yīng)用工具,對(duì)二手車(chē)之家網(wǎng)站的數(shù)據(jù)采集與分析進(jìn)行研究和探究,從而推動(dòng)當(dāng)

前二手車(chē)交易市場(chǎng)的健康發(fā)展。

1.1項(xiàng)目背景

隨著人們生活水平的提高和汽車(chē)消費(fèi)觀念的改變,二手車(chē)市場(chǎng)逐漸成為一

個(gè)備受關(guān)注的領(lǐng)域。在中國(guó),二手車(chē)市場(chǎng)的規(guī)模不斷擴(kuò)大,由于信息不對(duì)稱、

交易風(fēng)險(xiǎn)大等問(wèn)題,二手車(chē)市場(chǎng)的發(fā)展仍面臨著一些挑戰(zhàn)。

為了解決這些問(wèn)題,越來(lái)越多的企業(yè)開(kāi)始涉足二手車(chē)市場(chǎng),推出了各種二

手車(chē)交易平臺(tái)和服務(wù)。這些平臺(tái)通過(guò)整合資源、提供專業(yè)的評(píng)估、檢測(cè)、保養(yǎng)

等服務(wù),為消費(fèi)者提供更加安全、便捷的二手車(chē)交易體驗(yàn)。同時(shí),政府也加大

了對(duì)二手車(chē)市場(chǎng)的監(jiān)管力度,出臺(tái)了一系列政策和法規(guī),促進(jìn)了二手車(chē)市場(chǎng)的

規(guī)范化和健康發(fā)展。我的畢業(yè)設(shè)計(jì)就是基于二手車(chē)之家平臺(tái)公開(kāi)的數(shù)據(jù),對(duì)其進(jìn)

行處理、分析,繁雜的數(shù)據(jù)經(jīng)過(guò)清洗加分析后然后可視化。

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

1.2.1Python簡(jiǎn)介

20世紀(jì)80年代末,荷蘭的龜叔(GuidoRossum)創(chuàng)造了Python。

Python創(chuàng)建的初期并沒(méi)有引起大多數(shù)人們的關(guān)注,在21世紀(jì)初Google在

大量的項(xiàng)目業(yè)務(wù)上大規(guī)模的開(kāi)始應(yīng)用Python,Python也因此走進(jìn)大眾的視野,

從而促使Python的發(fā)展。

隨著計(jì)算機(jī)技術(shù)的日新月異,2010年后移動(dòng)互聯(lián)網(wǎng)的大肆普及。云計(jì)算、大

數(shù)據(jù)等信息技術(shù)興起,其中的大數(shù)據(jù)技術(shù)涉及到的數(shù)據(jù)獲取、清洗處理、可視化

1

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

都有Python的身影存在。云計(jì)算中最主要的框架Openstack就是由Python開(kāi)

發(fā)而來(lái),并且Openstack許多接口都支持Python的調(diào)用,對(duì)于平臺(tái)實(shí)現(xiàn)自動(dòng)化

極其友好。再到后來(lái)人工智能技術(shù)的崛起,AI領(lǐng)域使用了更多的Python技術(shù),用

它作為機(jī)器學(xué)習(xí)、關(guān)鍵算法的開(kāi)發(fā)工具。并且Python入門(mén)難度相較于JAVA、C++

等面向?qū)ο蟮恼Z(yǔ)言而言更加簡(jiǎn)單容易入門(mén)、所以它很快的便走進(jìn)了大眾的視野

中。

最后,在編程語(yǔ)言排行榜中。Python的排名已經(jīng)與老牌的C語(yǔ)言和JAVA語(yǔ)

言不相上下,它也逐漸走進(jìn)非IT行業(yè)工作者的視野內(nèi)?,F(xiàn)如今,人們用它開(kāi)發(fā)簡(jiǎn)

單的小腳本用來(lái)做文件的自動(dòng)化處理或者開(kāi)發(fā)一些小網(wǎng)站打發(fā)無(wú)聊時(shí)光。這也

突出Python的特點(diǎn)就是易學(xué)、第三方庫(kù)足夠豐富、并且免費(fèi)開(kāi)源、支持跨多平

臺(tái)且可移植性比較強(qiáng)。

1.2.2Jypyternotebook簡(jiǎn)介

Jupyternotebook從本質(zhì)上來(lái)說(shuō)是一種應(yīng)用程序,是一種基于瀏覽器的

工具。它將一些解釋性文本、數(shù)學(xué)、計(jì)算等結(jié)合起來(lái),放在一個(gè)交互式的創(chuàng)作型

文檔中。并且在這個(gè)創(chuàng)作型文檔中所有的內(nèi)容都是可分享并可見(jiàn)的。在一些教

學(xué)或者項(xiàng)目的講解中,jupyternotebook或許是一枝獨(dú)秀。因?yàn)樗С諱arkdown

標(biāo)記語(yǔ)言,在瀏覽器界面編輯代碼的同時(shí)可以很方便的為代碼提供注釋。在

jypyternotebook執(zhí)行代碼的同時(shí)對(duì)于注釋性文本并不會(huì)執(zhí)行,這個(gè)極大的方便

了教學(xué)人員,或者開(kāi)發(fā)人員講解項(xiàng)目

Jupyternotebook在大數(shù)據(jù)方面應(yīng)用比較廣泛,特別適合用來(lái)做數(shù)據(jù)的

清洗和處理,在數(shù)據(jù)挖掘和可視化上的應(yīng)用也是十分方便的。對(duì)于比較高層次的

開(kāi)發(fā)人員來(lái)說(shuō),這個(gè)工具也可以用來(lái)做深度的機(jī)器學(xué)習(xí)。

對(duì)于初學(xué)者來(lái)說(shuō)安裝Jupyternotebook的方法就是安裝Anaconda,因?yàn)?/p>

Anaconda的版本中就是自帶Jupyternotebook。如果覺(jué)得不需要Anaconda,可

以自主選擇進(jìn)入官網(wǎng)下載安裝包。

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

requests:最友好的網(wǎng)絡(luò)爬蟲(chóng)功能庫(kù),是Python實(shí)現(xiàn)的簡(jiǎn)單易用的HTTP庫(kù),

使用起來(lái)比urllib更簡(jiǎn)潔很多,Python第三方庫(kù)在使用前要先進(jìn)行安裝。

Re:正則表達(dá)式解析和處理功能庫(kù),里面包含了多種字符串匹配的方法。

Pprint:他的英文全稱為Dataprettyprinter他采用分行打印的方式輸出

數(shù)據(jù)結(jié)果。讓一些冗長(zhǎng)復(fù)雜結(jié)構(gòu)的數(shù)據(jù)輸出更加漂亮好看,讓開(kāi)發(fā)人員一目了然。

2

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

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

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

NumPy庫(kù)是Python數(shù)據(jù)分析的基礎(chǔ),是處理數(shù)組的Python庫(kù),NumPy庫(kù)的

數(shù)據(jù)結(jié)構(gòu)比Python自帶的更加高效。

pandas:數(shù)據(jù)分析并保存為csv文件,python數(shù)據(jù)分析高層次應(yīng)用庫(kù),還可

以進(jìn)行數(shù)據(jù)清洗。

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

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

wordcloud、scipy、jieba:生成中文詞云的。

pylab:它能設(shè)置畫(huà)圖讓其能顯示中文。

2需求分析

2.1可行性需求分析

1、技術(shù)可行性

Python是面向?qū)ο笳Z(yǔ)言中的一門(mén)通俗易懂的計(jì)算機(jī)編程語(yǔ)言,本次項(xiàng)目中

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

取的過(guò)程中遇到一些小問(wèn)題。隨后通過(guò)抓包分析發(fā)現(xiàn)國(guó)家藥監(jiān)局網(wǎng)站藥品信息

頁(yè)面的數(shù)據(jù)是動(dòng)態(tài)傳輸?shù)?所以我們通過(guò)瀏覽器控制臺(tái)獲取請(qǐng)求和其參數(shù)。然后

就可以得到網(wǎng)頁(yè)面數(shù)據(jù)的返回值。隨后將爬取出來(lái)的原始數(shù)據(jù)暫時(shí)以csv格式

儲(chǔ)存起來(lái),在后續(xù)的數(shù)據(jù)預(yù)處理和可視化中再進(jìn)行調(diào)用。最后我們會(huì)將準(zhǔn)確的數(shù)

據(jù)存入MySQL數(shù)據(jù)庫(kù)中做持久化儲(chǔ)存。

以上為此次項(xiàng)目的技術(shù)可行性,我也將在后續(xù)的工作中將所有的步驟實(shí)現(xiàn)

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

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

二手車(chē)網(wǎng)站所展示的信息更多,涵蓋了車(chē)輛品牌、車(chē)型、售價(jià)等多個(gè)方面,

數(shù)據(jù)可利用性較高。由于二手車(chē)交易網(wǎng)站較為復(fù)雜,數(shù)據(jù)爬取難度較大,需要

建立一套完整的數(shù)據(jù)獲取流程,同時(shí)還需進(jìn)行分析和處理。需要考慮數(shù)據(jù)清洗

和去重,以確保結(jié)果的準(zhǔn)確性。

3

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

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

本次項(xiàng)目的數(shù)據(jù)集的來(lái)源是二手車(chē)之家,是通過(guò)python爬取湖南省所有城

市的二手車(chē)信息。數(shù)據(jù)清洗后共3764條記錄,爬取完成后盡可能的檢查數(shù)據(jù)的

準(zhǔn)確性,確定爬取出來(lái)的數(shù)據(jù)無(wú)誤。數(shù)據(jù)采集在整個(gè)數(shù)據(jù)分析流程中占據(jù)了至關(guān)

重要的地位。為了將二手車(chē)市場(chǎng)中的所有信息納入分析,需要對(duì)市場(chǎng)上各種二

手車(chē)信息進(jìn)行系統(tǒng)的采集。而對(duì)于二手車(chē)市場(chǎng)的數(shù)據(jù),通過(guò)爬取二手車(chē)之家網(wǎng)

站可以獲取大量的信息。網(wǎng)絡(luò)爬蟲(chóng)是一種數(shù)據(jù)獲取的技術(shù),可以通過(guò)模擬瀏覽

器行為,實(shí)現(xiàn)自動(dòng)化訪問(wèn)網(wǎng)站,并獲取網(wǎng)站上的內(nèi)容和數(shù)據(jù)。在爬蟲(chóng)實(shí)現(xiàn)中,

首先需要對(duì)二手車(chē)之家網(wǎng)站的數(shù)據(jù)結(jié)構(gòu)進(jìn)行分析,然后編寫(xiě)爬蟲(chóng)代碼來(lái)模擬用

戶行為,實(shí)現(xiàn)數(shù)據(jù)的抓取。此外,在實(shí)現(xiàn)過(guò)程中,需要考慮網(wǎng)站的反爬蟲(chóng)機(jī)制

以及模擬登錄的實(shí)現(xiàn)等問(wèn)題。

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

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

Python是一種十分流行的網(wǎng)絡(luò)爬蟲(chóng)開(kāi)發(fā)語(yǔ)言,常用的Python網(wǎng)絡(luò)爬蟲(chóng)技術(shù)

包括:

1.Requests:一個(gè)專門(mén)用來(lái)處理HTTP請(qǐng)求的Python庫(kù),可用于發(fā)送HTTP

請(qǐng)求及處理相應(yīng)結(jié)果。常用于下層爬蟲(chóng)框架的封裝中。

2.Scrapy:一個(gè)快速高效的爬蟲(chóng)框架,使用Python語(yǔ)言編寫(xiě),支持自動(dòng)化

網(wǎng)站爬行、數(shù)據(jù)抽取等功能,是一種速度快、易用性好的爬蟲(chóng)框架。

3.BeautifulSoup:一個(gè)基于Python的HTML/XML解析庫(kù),能夠?qū)TML頁(yè)

面轉(zhuǎn)化為Python可操作的數(shù)據(jù)結(jié)構(gòu),支持解析HTML標(biāo)簽及CSS選擇器。

4.Selenium:一個(gè)可以通過(guò)代碼控制瀏覽器操作的自動(dòng)化測(cè)試工具,能夠

解決一些比較復(fù)雜的爬蟲(chóng)工作,例如模擬用戶登錄、爬取JavaScript渲染后的

網(wǎng)頁(yè)等。

5.PyQuery:基于jQuery語(yǔ)法的Python庫(kù),支持解析HTML文檔、選擇HTML

中的元素、讀取和修改HTML文檔等。

6.PySpider:一個(gè)強(qiáng)大的開(kāi)源網(wǎng)絡(luò)爬蟲(chóng)系統(tǒng),具有強(qiáng)大、易用的web界面,

支持分布式爬蟲(chóng)、源碼閱讀等功能。

這些技術(shù)都是Python下常用的網(wǎng)絡(luò)爬蟲(chóng)技術(shù),通過(guò)將它們組合使用,可以

實(shí)現(xiàn)多種不同類型的網(wǎng)絡(luò)爬蟲(chóng)任務(wù)。使用Python進(jìn)行網(wǎng)絡(luò)爬蟲(chóng)開(kāi)發(fā)具有高效、

4

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

易用、靈活等特點(diǎn),是一種十分流行的開(kāi)發(fā)方式。。

2.3.2文件存取技術(shù)

文件存儲(chǔ)技術(shù)指的是將數(shù)據(jù)存儲(chǔ)在物理設(shè)備中,文件存取技術(shù)指的是如何

讀取和處理存儲(chǔ)在物理設(shè)備中的文件數(shù)據(jù),文本文件存取技術(shù):可對(duì)文本文件

進(jìn)行讀取、寫(xiě)入、復(fù)制和粘貼等操作,能夠識(shí)別并處理文本編碼格式。

二進(jìn)制文件存取技術(shù):可對(duì)二進(jìn)制文件進(jìn)行讀取、寫(xiě)入、復(fù)制和粘貼等操

作,允許以十六進(jìn)制或二進(jìn)制形式查看文件內(nèi)容,但無(wú)法直接顯示文本信息。

二進(jìn)制文件存取技術(shù):可對(duì)二進(jìn)制文件進(jìn)行讀取、寫(xiě)入、復(fù)制和粘貼等操作,

允許以十六進(jìn)制或二進(jìn)制形式查看文件內(nèi)容,但無(wú)法直接顯示文本信息。

數(shù)據(jù)庫(kù)文件存取技術(shù):將數(shù)據(jù)結(jié)構(gòu)化存儲(chǔ)在磁盤(pán)上,并提供了查詢、更新

和刪除等數(shù)據(jù)庫(kù)操作界面,用于有效地管理大量數(shù)據(jù)。

2.3.3可視化技術(shù)

可視化技術(shù)指的是通過(guò)圖形化方式展示數(shù)據(jù),將抽象的數(shù)據(jù)轉(zhuǎn)換成易于理

解和解釋的形式,幫助用戶更直觀的了解數(shù)據(jù),從而更好的發(fā)現(xiàn)數(shù)據(jù)中的規(guī)律

和趨勢(shì),進(jìn)一步促進(jìn)數(shù)據(jù)分析和決策。在現(xiàn)實(shí)生活中,可視化技術(shù)廣泛應(yīng)用于

商業(yè)、政務(wù)、科研、教育等領(lǐng)域Python提供了多種可視化技術(shù)的工具和庫(kù),常

用的包括:

Matplotlib:是Python的主流可視化工具,支持生成各種類型的圖表,如

折線圖、散點(diǎn)圖、直方圖、條形圖、餅圖等,可用于探索性數(shù)據(jù)分析和呈現(xiàn)分

析結(jié)果。

Seaborn:是基于Matplotlib的高級(jí)數(shù)據(jù)可視化庫(kù),提供了更多的可視化

類型和樣式,適用于快速可視化數(shù)據(jù)。

Plotly:提供了交互性更強(qiáng)的圖形可視化,支持生成多種類型的圖表,如

折線圖、散點(diǎn)圖、直方圖、氣泡圖、3D圖、小提琴圖等。

Bokeh:是一個(gè)交互式可視化工具,支持生成各種類型的圖表,如折線圖、

散點(diǎn)圖、直方圖、樹(shù)狀圖等,適用于大規(guī)模、高維度或?qū)崟r(shí)數(shù)據(jù)的可視化。

Pandas:是Python主要的數(shù)據(jù)處理包,支持生成各種類型的可視化圖表,

同時(shí)還提供了多種常用統(tǒng)計(jì)圖形。

Ggplot:是R語(yǔ)言中著名的ggplot2可視化系統(tǒng)的Python實(shí)現(xiàn),支持生成

各種類型的圖表,如散點(diǎn)圖、直方圖、箱線圖等。

5

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

這些庫(kù)都有自己的特點(diǎn)和使用場(chǎng)景,根據(jù)不同的需要選擇不同的庫(kù)來(lái)進(jìn)行

數(shù)據(jù)可視化處理。

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

3.1采集頁(yè)面分析

我們首先通過(guò)瀏覽器搜索二手車(chē)之家的官方網(wǎng)頁(yè),然后點(diǎn)擊全國(guó),找到湖南

省觀察圖3-1,其中URL為:

/hunan/a0_0msdgscncgpi1ltocsp1exx0/?pvareaid=1

02179;然后點(diǎn)擊頁(yè)面下方的下一頁(yè)按鈕,同時(shí)觀察URL,發(fā)現(xiàn)URL中

a0_0msdgscncgpi1ltocsp1exx0變?yōu)閍0_0msdgscncgpi1ltocsp2exx0。如圖3-2

圖3-1數(shù)據(jù)網(wǎng)址頁(yè)面

按F12調(diào)出開(kāi)發(fā)者工具,刷新頁(yè)面,如圖2-4。

圖3-2頁(yè)碼測(cè)試

6

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

利用全局搜索工具定位所需數(shù)據(jù)位置,點(diǎn)擊開(kāi)發(fā)者工具上面的Headers字

段,分析這是個(gè)什么請(qǐng)求,發(fā)現(xiàn)這個(gè)是一個(gè)get請(qǐng)求如圖3-3,那我們需要尋找它

的的Fromdata往下翻找,在最后找到了表單數(shù)據(jù)FormData,如圖3-4。

圖3-3開(kāi)發(fā)者工具

圖3-4Cookie,User-Agent

3.2字段分析

我們打開(kāi)網(wǎng)頁(yè)按F12打開(kāi)開(kāi)發(fā)者工具,使用元素面板可以快速審查HTML元

素的代碼及其相關(guān)屬性,你可以通過(guò)點(diǎn)擊元素面板中的元素來(lái)選中網(wǎng)頁(yè)上的相

應(yīng)元素。如圖3-5我們可以發(fā)現(xiàn)a元素中有一個(gè)網(wǎng)址點(diǎn)擊它可以進(jìn)入車(chē)輛的詳

細(xì)頁(yè)面。如圖3-6查看網(wǎng)頁(yè)元素可以發(fā)現(xiàn)我們可以用XPath選擇器語(yǔ)言從HTML

7

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

頁(yè)面中提取指定元素的文本內(nèi)容,匹配所有帶有class屬性為price的<span>

元素,并使用//text()方法獲取它們的文本內(nèi)容,包括子元素的文本內(nèi)容。

如圖3-7我們可以contains()函數(shù)通過(guò)匹配指定汽車(chē)參數(shù)文本的<span>元

素,然后通過(guò)../選擇器返回到上一個(gè)父元素,從而找到包含車(chē)身顏色的文本在

同一級(jí)別下的元素。最后,通過(guò)text()方法提取該元素中包含的文本內(nèi)容。

圖3-5分析數(shù)據(jù)類型頁(yè)面

圖3-6汽車(chē)價(jià)格字段

8

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

圖3-7汽車(chē)參數(shù)字段

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

導(dǎo)入所需庫(kù),如圖3-8

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

設(shè)置請(qǐng)求頭,偽裝成瀏覽器訪問(wèn)服務(wù)器。如圖3-9

圖3-9請(qǐng)求頭內(nèi)容頁(yè)面

代碼實(shí)現(xiàn)如下:

importjson,random,requests

importscrapy

fromlxmlimportetree

importpandasaspd

9

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

from..confimport*

classSpider(scrapy.Spider):

name='ershouchezhijia_new'

headers={

'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)

AppleWebKit/537.36(KHTML,likeGecko)Chrome/99.0.4844.74Safari/537.36',

'Referer':

'/china/a0_0msdgscncgpi1ltocsp94exf4-3x0/?pvareaid=10

2179',

}

defstart_requests(self):

df1=pd.read_csv(r'car_list.csv')

try:

df2=pd.read_csv(r'result.csv')

df2=json.loads(df2.to_json(orient='records'))

user_new=[]

foriindf2:

user_new.append(i['url'])

except:

user_new=[]

#df1=df1.drop_duplicates(subset='specid',keep='first')

df1=json.loads(df1.to_json(orient='records'))

forid1indf1:

id1['url']

='/dealer/1/{}.html'.format(id1['biz_id'])

ifid1['url']inuser_new:

print('222222222')

continue

url2=

'/CarProduct/GetParam.ashx?specid={}'.format(i

d1['specid'])

print(33333)

yieldscrapy.Request(

url=url2,

callback=self.parse_info,

dont_filter=True,

meta={'buzz':id1}

)

defparse_info(self,response):

if'請(qǐng)求參數(shù)格式錯(cuò)誤'inresponse.text:

10

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

return

buzz=response.meta['buzz']

try:

data=json.loads(response.text)

except:

return

item1={}

item1['url']=buzz['url']

#item1['img']=buzz['img']

item1['specid']=buzz['specid']

type_List=['車(chē)型名稱','廠商指導(dǎo)價(jià)(元)','廠商','級(jí)別','能源類型

','上市時(shí)間','純電續(xù)航里程(km)','快充時(shí)間(小時(shí))','慢充時(shí)間(小時(shí))','快充

電量百分比','最大功率(kW)',"最大扭矩(N?m)",'電動(dòng)機(jī)(Ps)','長(zhǎng)*寬*高(mm)','

車(chē)身結(jié)構(gòu)','最高車(chē)速(km/h)','官方0-100km/h加速(s)','實(shí)測(cè)0-100km/h加速

(s)','實(shí)測(cè)100-0km/h制動(dòng)(m)','實(shí)測(cè)續(xù)航里程(km)','實(shí)測(cè)快充時(shí)間(小時(shí))','實(shí)

測(cè)慢充時(shí)間(小時(shí))','最低荷電狀態(tài)油耗(L/100km)','整車(chē)質(zhì)保']

fortype2intype_List:

item1[type2]='-'

type_list2=['長(zhǎng)度(mm)','寬度(mm)','高度(mm)','軸距(mm)','前輪距(mm)','

后輪距(mm)','最小離地間隙(mm)','車(chē)身結(jié)構(gòu)','車(chē)門(mén)數(shù)(個(gè))','座位數(shù)(個(gè))','油箱容

積(L)','氣罐容積(L)','行李廂容積(L)','整備質(zhì)量(kg)']

fortype3intype_list2:

item1[type3]='-'

type_list3=['電機(jī)類型','電動(dòng)機(jī)總功率(kW)','電動(dòng)機(jī)總扭矩(N?m)','

前電動(dòng)機(jī)最大功率(kW)','前電動(dòng)機(jī)最大扭矩(N?m)','后電動(dòng)機(jī)最大功率(kW)','后電

動(dòng)機(jī)最大扭矩(N?m)','系統(tǒng)綜合功率(kW)','系統(tǒng)綜合扭矩(N?m)','驅(qū)動(dòng)電機(jī)數(shù)','

電機(jī)布局','電池類型','NEDC純電續(xù)航里程(km)','WLTP純電續(xù)航里程(km)','CLTC

純電續(xù)航里程(km)','EPA純電續(xù)航里程(km)','電池能量(kWh)','百公里耗電量

(kWh/100km)','電池組質(zhì)保','快充時(shí)間(小時(shí))','慢充時(shí)間(小時(shí))','快充電量(%)']

fortype3intype_list3:

item1[type3]='-'

type_list4=['擋位個(gè)數(shù)','變速箱類型','簡(jiǎn)稱']

fortype3intype_list4:

item1[type3]='-'

type_list5=['驅(qū)動(dòng)方式','前懸架類型','后懸架類型','助力類型','車(chē)體

結(jié)構(gòu)']

fortype3intype_list5:

item1[type3]='-'

type_list6=['前制動(dòng)器類型','后制動(dòng)器類型','駐車(chē)制動(dòng)類型','前輪胎

規(guī)格','后輪胎規(guī)格','備胎規(guī)格']

fortype3intype_list6:

11

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

item1[type3]='-'

fornameindata['result']['paramtypeitems']:

ifname['name']=='基本參數(shù)':

type_new_list=type_List

elifname['name']=='車(chē)身':

type_new_list=type_list2

elifname['name']=='電動(dòng)機(jī)':

type_new_list=type_list3

elifname['name']=='變速箱':

type_new_list=type_list4

elifname['name']=='底盤(pán)轉(zhuǎn)向':

type_new_list=type_list5

elifname['name']=='車(chē)輪制動(dòng)':

type_new_list=type_list6

fortype1inname['paramitems']:

iftype1['name']intype_new_list:

item1[type1['name']]=type1['value']

yieldscrapy.Request(

url=buzz['url'],

callback=self.parse_info_two,

dont_filter=True,

meta={'item1':item1}

)

defparse_info_two(self,response):

item1=response.meta['item1']

tree=etree.HTML(response.text)

title=tree.xpath('//h3/text()')

title=str_replace(title)

info=tree.xpath('//ul[@class="brand-unit-itemfn-clear"]//text()')

try:

item1['標(biāo)題']=title

#if'瀏覽了該車(chē)的用戶還看了'initem1

ifitem1['標(biāo)題']=='瀏覽了該車(chē)的用戶還看了:':

return

item1['表顯里程']=info[4]

item1['上牌時(shí)間']=info[10]

item1['擋位/排量']=info[16]

item1['車(chē)輛所在地']=info[22]

price=tree.xpath('//span[@class="price"]//text()')

12

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

price=str_replace(price).split('萬(wàn)')[0]

item1['價(jià)格']=price

exceptExceptionase:

print(e,item1)

return

#price2=tree.xpath('//s[@id="newprice"]/text()')

#price2=str_replace(price2)

#item['新車(chē)含稅價(jià)']=price2.replace('新車(chē)含稅價(jià):','')

img=tree.xpath(

'//div[@class="swiper-slideswiper-slide-visible

swiper-slide-activeswiper-slide-thumb-active"]/img/@src')

ifimg:

if'http'notinimg:

img='http:'+img

time1=tree.xpath('//span[contains(text(),"發(fā)布時(shí)間")]/../text()')

time1=str_replace(time1)

item1['發(fā)布時(shí)間']=time1

#item['圖片']=img

guohu=tree.xpath('//span[contains(text(),"過(guò)戶次數(shù)")]/../text()')

guohu=str_replace(guohu)

item1['過(guò)戶次數(shù)']=guohu.replace('次(以車(chē)輛登記證為準(zhǔn))','')

item1['車(chē)身顏色']=str_replace(tree.xpath('//span[contains(text(),"

車(chē)身顏色")]/../text()'))

item1['變速箱']=

is_null(tree.xpath('//ul[@class="basic-item-ul"]/li[3]/text()'))

item1['排放標(biāo)準(zhǔn)']=str_replace(tree.xpath('//span[contains(text(),"

排放標(biāo)準(zhǔn)")]/../text()'))

item1['排量']=

is_null(tree.xpath('//ul[@class="basic-item-ul"]/li[5]/text()'))

item1['年檢到期']=str_replace(tree.xpath('//span[contains(text(),"

年檢到期")]/../text()'))

item1['保險(xiǎn)到期']=str_replace(tree.xpath('//span[contains(text(),"

保險(xiǎn)到期")]/../text()'))

item1['質(zhì)保到期']=str_replace(tree.xpath('//span[contains(text(),"

質(zhì)保到期")]/../text()'))

item1['發(fā)動(dòng)機(jī)']=str_replace(tree.xpath('//span[contains(text(),"

發(fā)動(dòng)機(jī)")]/../text()'))

item1['車(chē)輛級(jí)別']=str_replace(tree.xpath('//span[contains(text(),"

13

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

車(chē)輛級(jí)別")]/../text()'))

item1['燃油標(biāo)號(hào)']=str_replace(tree.xpath('//span[contains(text(),"

燃油標(biāo)號(hào)")]/../text()'))

item1['驅(qū)動(dòng)方式']=str_replace(tree.xpath('//span[contains(text(),"

驅(qū)動(dòng)方式")]/../text()'))

url3=

'/api/carinfo/specprc?specid={}'.format(item

1['specid'])

yieldscrapy.Request(

url=url3,

callback=self.get_comment,

meta={'item1':item1}

)

defget_comment(self,response):

item1=response.meta['item1']

data=json.loads(response.text)

try:

comment_list=[]

forcommentindata['result']['DimModelPRCTypes'][0]['Summary']:

comment_list.append(str(comment['Combination']))

try:

item1['綜合評(píng)價(jià)']=','.join(comment_list)

except:

item1['綜合評(píng)價(jià)']=''

except:

item1['綜合評(píng)價(jià)']=''

url4=

'/api/NewCarPriceInTax.ashx?_appid=2sc&pid=0&sp

ecid={}&cid={}'.format(item1['specid'],item1['url'].split('/')[-1].replace(

'.html',''))

yieldscrapy.Request(

url=url4,

callback=self.get_price,

meta={'item1':item1}

)

defget_price(self,response):

item1=response.meta['item1']

data=json.loads(response.text)

try:

14

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

item1['原價(jià)']=data['result']['newcarprice']

except:

item1['原價(jià)']=''

yielditem1

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

在數(shù)據(jù)分析的過(guò)程中,數(shù)據(jù)質(zhì)量決定了分析結(jié)果的準(zhǔn)確性和可靠性。因此,

數(shù)據(jù)清洗和處理是十分關(guān)鍵的環(huán)節(jié)。Python提供了豐富的數(shù)據(jù)清洗和處理庫(kù),

包括Pandas、NumPy等。這些工具可以幫助我們對(duì)數(shù)據(jù)進(jìn)行快速、高效的處理

和清洗。

在數(shù)據(jù)處理過(guò)程中,經(jīng)常會(huì)遇到缺失值的情況。缺失值可能會(huì)影響數(shù)據(jù)分

析結(jié)果的準(zhǔn)確性。因此,需要對(duì)缺失值進(jìn)行處理。重復(fù)值是指出現(xiàn)多次的具有

相同特征的數(shù)據(jù),它們可能會(huì)影響數(shù)據(jù)分析的準(zhǔn)確性。可以使用Pandas庫(kù)的

duplicated()函數(shù)來(lái)判斷是否存在重復(fù)值,并使用drop_duplicates()函數(shù)將重

復(fù)值進(jìn)行刪除。

總之,數(shù)據(jù)清洗和處理對(duì)于數(shù)據(jù)分析的準(zhǔn)確性和可靠性至關(guān)重要。在Python

中,可以使用豐富的數(shù)據(jù)處理和清洗庫(kù)來(lái)實(shí)現(xiàn)數(shù)據(jù)清洗和處理的任務(wù)。需要根

據(jù)具體的數(shù)據(jù)情況和分析需求,選擇適當(dāng)?shù)姆椒ê图夹g(shù),對(duì)數(shù)據(jù)進(jìn)行全面、準(zhǔn)

確的處理和清洗。

15

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

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

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

經(jīng)過(guò)比對(duì)和檢查,發(fā)現(xiàn)數(shù)據(jù)存在缺失,還有空值,那么我們根據(jù)需求將有效

數(shù)據(jù)統(tǒng)一規(guī)劃去掉不要的行列數(shù)據(jù),防止數(shù)據(jù)冗余。因此我們只需保留需要的數(shù)

據(jù),然后整理為原網(wǎng)頁(yè)格式存入cleaned_car.csv文件中,留存后續(xù)作為統(tǒng)計(jì)分

析、可視化使用。

圖4-2數(shù)據(jù)篩選界面

16

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

圖4-3清洗空值

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

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

數(shù)據(jù)儲(chǔ)存得方法有很多種,常見(jiàn)得可以直接用記事本格式儲(chǔ)存(txt),或

者直接用其他文件的形式儲(chǔ)存csv、excel、json等,但是以上方法保存的數(shù)據(jù)

體量普遍都比較小。如果需要儲(chǔ)存較大的數(shù)據(jù)信息就需要用到我們的數(shù)據(jù)庫(kù),數(shù)

據(jù)庫(kù)也分為關(guān)系型和非關(guān)系型數(shù)據(jù)庫(kù)。關(guān)系型數(shù)據(jù)庫(kù)比較典型的有MySQL和

Oracle等,非關(guān)系型數(shù)據(jù)庫(kù)等以鍵值對(duì)形式儲(chǔ)存數(shù)據(jù)的代表有Mongodb、Redis

等。本次項(xiàng)目我們用到的是csv。

如圖4-5所示:

17

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

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

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

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

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

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

18

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

圖5-2數(shù)據(jù)加載頁(yè)面

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

5.2.1依據(jù)車(chē)輛產(chǎn)商進(jìn)行統(tǒng)計(jì)

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

從圖5-3中將可以看出當(dāng)前二手車(chē)市場(chǎng)上在售的品牌主要集中在進(jìn)口車(chē)、

豪華車(chē)和合資車(chē)這些品牌上,具體情況如下:

豪華車(chē),進(jìn)口車(chē):華晨寶馬、北京奔馳、一汽奧迪、保時(shí)捷、路虎(進(jìn)口)、

奧迪(進(jìn)口)、雷克薩斯、比亞迪等豪華車(chē)品牌,由于豪車(chē)和進(jìn)口車(chē),品牌知名

度高技術(shù)和品質(zhì)水平高價(jià)格昂貴,對(duì)于消費(fèi)者的經(jīng)濟(jì)能力要求比較高,所以在

二手車(chē)網(wǎng)站上在售的車(chē)輛數(shù)量多,例如,華晨寶馬在售為362輛。這說(shuō)明豪華

車(chē),進(jìn)口車(chē)銷量不是特別高。

19

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

合資車(chē):上汽通用凱迪拉克、上汽大眾、上汽通用別克、廣汽本田、東風(fēng)

日產(chǎn)、廣汽豐田、東風(fēng)本田、吉利汽車(chē)、一汽豐田、上汽通用雪佛蘭等國(guó)外知

名汽車(chē)品牌與國(guó)內(nèi)知名汽車(chē)企業(yè)聯(lián)合生產(chǎn)的車(chē)型,合資車(chē)企業(yè)的生產(chǎn)和銷售集

成了國(guó)內(nèi)工人的廉價(jià)勞動(dòng)力和國(guó)外企業(yè)成熟的管理模式,從而減少了制造成本

和銷售成本,能夠提供具有價(jià)格競(jìng)爭(zhēng)力的高質(zhì)量車(chē)輛。例如保價(jià)性、品質(zhì)和配

置等。例如,上汽通用凱迪拉克年在售為156輛。這說(shuō)明合資車(chē)價(jià)格相對(duì)于豪

華進(jìn)口車(chē)更為親民,而且性能、配置和品質(zhì)等方面也非常出色,更具有性價(jià)比。

自主車(chē):長(zhǎng)城汽車(chē)、長(zhǎng)安汽車(chē)、長(zhǎng)安福特、廣汽乘用車(chē)、MINI、長(zhǎng)安馬自

達(dá)都是以汽車(chē)生產(chǎn)、銷售和研發(fā)為主營(yíng)業(yè)務(wù)的國(guó)內(nèi)汽車(chē)品牌。自主車(chē)企業(yè)通常

擁有自主研發(fā)的技術(shù)和產(chǎn)品,可以更快地推出新產(chǎn)品,更好地滿足不斷變化的

市場(chǎng)需求。價(jià)格優(yōu)勢(shì)。自主車(chē)企業(yè)生產(chǎn)成本相對(duì)較低,可以通過(guò)價(jià)格優(yōu)勢(shì)贏得

市場(chǎng)。自主車(chē)在價(jià)格上更加的親民在二手車(chē)網(wǎng)站上的在售車(chē)輛一般都在50輛左

右,這可以說(shuō)明低價(jià)格車(chē)輛可能有著更優(yōu)秀的性價(jià)比,從而吸引消費(fèi)者的關(guān)注。

5.2.2依據(jù)車(chē)輛級(jí)別進(jìn)行統(tǒng)計(jì)

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

從圖5-4中可以看在二手車(chē)網(wǎng)站上出售的車(chē)型數(shù)量對(duì)比,中型車(chē)、緊湊型

車(chē)、中大型車(chē)、中型SUV和緊湊型SUV等常規(guī)車(chē)型的需求相對(duì)較高,它們的銷

量表現(xiàn)也相對(duì)較好。另外,大型車(chē)、小型車(chē)、跑車(chē)、中大型MPV等車(chē)型的銷量

相對(duì)較低,可能是由于其市場(chǎng)定位不夠明確或者面對(duì)的競(jìng)爭(zhēng)較為激烈等原因。

對(duì)于微型車(chē)、緊湊型MPV、輕客、皮卡和微面等車(chē)型,銷量也比較低,這說(shuō)明這

些車(chē)型的市場(chǎng)份額相對(duì)較小。

20

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

緊湊型車(chē)是一種兼顧經(jīng)濟(jì)性、操控性和實(shí)用性的汽車(chē)類型,尤其適合在城

市中進(jìn)行代步和日常行駛

中型車(chē)在車(chē)身尺寸、內(nèi)部空間、油耗表現(xiàn)、配置和性價(jià)比等方面均處于中

等水平,將舒適性和油耗性能相對(duì)平衡,可以說(shuō)是一種較為全面的車(chē)型,符合

大多數(shù)消費(fèi)者所需的基本駕駛性能和舒適體驗(yàn),因此在市場(chǎng)中有較高的競(jìng)爭(zhēng)力。

緊湊型車(chē)和中型車(chē)占據(jù)汽車(chē)市場(chǎng)超過(guò)一半的比例,那么這可能意味著消費(fèi)

者更傾向于購(gòu)買(mǎi)較小型號(hào)的汽車(chē),或者他們更注重燃油經(jīng)濟(jì)性和實(shí)用性,因?yàn)?/p>

較小型號(hào)的汽車(chē)通常比大型車(chē)更為環(huán)保和節(jié)能。

5.2.3依據(jù)車(chē)輛價(jià)格進(jìn)行統(tǒng)計(jì)和分析

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

從圖5-5中這個(gè)數(shù)據(jù)集描述了一個(gè)汽車(chē)銷售平臺(tái)的銷售數(shù)據(jù)??梢钥闯?,

銷售的汽車(chē)價(jià)格主要分布在10萬(wàn)以下和20萬(wàn)以下的價(jià)格區(qū)間內(nèi)(共計(jì)2063

輛),約占銷售總量的70%。此外,也可以看到銷售較高檔次的汽車(chē)(價(jià)格在

溫馨提示

  • 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)論