基于Python的二手車之家數(shù)據(jù)采集與分析_第1頁
基于Python的二手車之家數(shù)據(jù)采集與分析_第2頁
基于Python的二手車之家數(shù)據(jù)采集與分析_第3頁
基于Python的二手車之家數(shù)據(jù)采集與分析_第4頁
基于Python的二手車之家數(shù)據(jù)采集與分析_第5頁
已閱讀5頁,還剩21頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(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)境與工具................................................................................................1

1.2.1Python簡介............................................................................................1

1.2.2Jypyternotebook簡介........................................................................2

1.2.3Python第三方庫簡介............................................................................2

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

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

2.2采集目標功能分析............................................................................................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數(shù)據(jù)采集.......................................................................................................................6

3.1采集頁面分析....................................................................................................6

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

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

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

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

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

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

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

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

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

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

I

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

5.2.3依據(jù)車輛價格進行統(tǒng)計和分析...........................................................21

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

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

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

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

II

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

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

1引言

二手車市場是一個龐大的市場,而且近年來在汽車消費趨勢的影響下,二

手車交易市場得到了顯著的發(fā)展。由于消費者對于二手車交易市場的需求日益

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

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

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

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

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

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

1.1項目背景

隨著人們生活水平的提高和汽車消費觀念的改變,二手車市場逐漸成為一

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

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

為了解決這些問題,越來越多的企業(yè)開始涉足二手車市場,推出了各種二

手車交易平臺和服務(wù)。這些平臺通過整合資源、提供專業(yè)的評估、檢測、保養(yǎng)

等服務(wù),為消費者提供更加安全、便捷的二手車交易體驗。同時,政府也加大

了對二手車市場的監(jiān)管力度,出臺了一系列政策和法規(guī),促進了二手車市場的

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

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

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

1.2.1Python簡介

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

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

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

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

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

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

1

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

都有Python的身影存在。云計算中最主要的框架Openstack就是由Python開

發(fā)而來,并且Openstack許多接口都支持Python的調(diào)用,對于平臺實現(xiàn)自動化

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

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

等面向?qū)ο蟮恼Z言而言更加簡單容易入門、所以它很快的便走進了大眾的視野

中。

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

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

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

突出Python的特點就是易學(xué)、第三方庫足夠豐富、并且免費開源、支持跨多平

臺且可移植性比較強。

1.2.2Jypyternotebook簡介

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

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

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

學(xué)或者項目的講解中,jupyternotebook或許是一枝獨秀。因為它支持Markdown

標記語言,在瀏覽器界面編輯代碼的同時可以很方便的為代碼提供注釋。在

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

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

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

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

開發(fā)人員來說,這個工具也可以用來做深度的機器學(xué)習(xí)。

對于初學(xué)者來說安裝Jupyternotebook的方法就是安裝Anaconda,因為

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

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

1.2.3Python第三方庫簡介

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

使用起來比urllib更簡潔很多,Python第三方庫在使用前要先進行安裝。

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

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

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

2

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

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

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

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

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

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

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

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

散點圖、直方圖等等。

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

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

2需求分析

2.1可行性需求分析

1、技術(shù)可行性

Python是面向?qū)ο笳Z言中的一門通俗易懂的計算機編程語言,本次項目中

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

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

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

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

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

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

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

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

2、項目可行性

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

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

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

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

3

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

2.2采集目標功能分析

本次項目的數(shù)據(jù)集的來源是二手車之家,是通過python爬取湖南省所有城

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

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

重要的地位。為了將二手車市場中的所有信息納入分析,需要對市場上各種二

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

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

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

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

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

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

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

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

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

包括:

1.Requests:一個專門用來處理HTTP請求的Python庫,可用于發(fā)送HTTP

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

2.Scrapy:一個快速高效的爬蟲框架,使用Python語言編寫,支持自動化

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

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

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

4.Selenium:一個可以通過代碼控制瀏覽器操作的自動化測試工具,能夠

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

網(wǎng)頁等。

5.PyQuery:基于jQuery語法的Python庫,支持解析HTML文檔、選擇HTML

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

6.PySpider:一個強大的開源網(wǎng)絡(luò)爬蟲系統(tǒng),具有強大、易用的web界面,

支持分布式爬蟲、源碼閱讀等功能。

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

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

4

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

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

2.3.2文件存取技術(shù)

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

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

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

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

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

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

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

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

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

2.3.3可視化技術(shù)

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

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

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

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

用的包括:

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

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

析結(jié)果。

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

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

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

折線圖、散點圖、直方圖、氣泡圖、3D圖、小提琴圖等。

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

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

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

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

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

各種類型的圖表,如散點圖、直方圖、箱線圖等。

5

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

這些庫都有自己的特點和使用場景,根據(jù)不同的需要選擇不同的庫來進行

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

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

3.1采集頁面分析

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

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

/hunan/a0_0msdgscncgpi1ltocsp1exx0/?pvareaid=1

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

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

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

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

圖3-2頁碼測試

6

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

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

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

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

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

圖3-4Cookie,User-Agent

3.2字段分析

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

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

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

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

7

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

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

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

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

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

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

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

圖3-6汽車價格字段

8

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

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

3.3編程實現(xiàn)

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

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

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

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

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

importjson,random,requests

importscrapy

fromlxmlimportetree

importpandasaspd

9

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

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'請求參數(shù)格式錯誤'inresponse.text:

10

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

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=['車型名稱','廠商指導(dǎo)價(元)','廠商','級別','能源類型

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

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

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

(s)','實測100-0km/h制動(m)','實測續(xù)航里程(km)','實測快充時間(小時)','實

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

fortype2intype_List:

item1[type2]='-'

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

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

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

fortype3intype_list2:

item1[type3]='-'

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

前電動機最大功率(kW)','前電動機最大扭矩(N?m)','后電動機最大功率(kW)','后電

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

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

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

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

fortype3intype_list3:

item1[type3]='-'

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

fortype3intype_list4:

item1[type3]='-'

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

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

fortype3intype_list5:

item1[type3]='-'

type_list6=['前制動器類型','后制動器類型','駐車制動類型','前輪胎

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

fortype3intype_list6:

11

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

item1[type3]='-'

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

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

type_new_list=type_List

elifname['name']=='車身':

type_new_list=type_list2

elifname['name']=='電動機':

type_new_list=type_list3

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

type_new_list=type_list4

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

type_new_list=type_list5

elifname['name']=='車輪制動':

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['標題']=title

#if'瀏覽了該車的用戶還看了'initem1

ifitem1['標題']=='瀏覽了該車的用戶還看了:':

return

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

item1['上牌時間']=info[10]

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

item1['車輛所在地']=info[22]

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

12

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

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

item1['價格']=price

exceptExceptionase:

print(e,item1)

return

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

#price2=str_replace(price2)

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

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ā)布時間")]/../text()')

time1=str_replace(time1)

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

#item['圖片']=img

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

guohu=str_replace(guohu)

item1['過戶次數(shù)']=guohu.replace('次(以車輛登記證為準)','')

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

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

item1['變速箱']=

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

item1['排放標準']=str_replace(tree.xpath('//span[contains(text(),"

排放標準")]/../text()'))

item1['排量']=

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

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

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

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

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

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

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

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

發(fā)動機")]/../text()'))

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

13

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

車輛級別")]/../text()'))

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

燃油標號")]/../text()'))

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

驅(qū)動方式")]/../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['綜合評價']=','.join(comment_list)

except:

item1['綜合評價']=''

except:

item1['綜合評價']=''

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è)計

item1['原價']=data['result']['newcarprice']

except:

item1['原價']=''

yielditem1

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

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

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

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

和清洗。

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

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

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

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

復(fù)值進行刪除。

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

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

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

確的處理和清洗。

15

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

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

圖4-1數(shù)據(jù)清洗準備頁面

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

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

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

析、可視化使用。

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

16

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

圖4-3清洗空值

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

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

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

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

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

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

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

等。本次項目我們用到的是csv。

如圖4-5所示:

17

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

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

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

5.1數(shù)據(jù)準備

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

圖5-1數(shù)據(jù)準備頁面

18

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

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

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

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

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

從圖5-3中將可以看出當前二手車市場上在售的品牌主要集中在進口車、

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

豪華車,進口車:華晨寶馬、北京奔馳、一汽奧迪、保時捷、路虎(進口)、

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

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

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

車,進口車銷量不是特別高。

19

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

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

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

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

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

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

置等。例如,上汽通用凱迪拉克年在售為156輛。這說明合資車價格相對于豪

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

自主車:長城汽車、長安汽車、長安福特、廣汽乘用車、MINI、長安馬自

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

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

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

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

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

5.2.2依據(jù)車輛級別進行統(tǒng)計

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

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

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

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

相對較低,可能是由于其市場定位不夠明確或者面對的競爭較為激烈等原因。

對于微型車、緊湊型MPV、輕客、皮卡和微面等車型,銷量也比較低,這說明這

些車型的市場份額相對較小。

20

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

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

市中進行代步和日常行駛

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

等水平,將舒適性和油耗性能相對平衡,可以說是一種較為全面的車型,符合

大多數(shù)消費者所需的基本駕駛性能和舒適體驗,因此在市場中有較高的競爭力。

緊湊型車和中型車占據(jù)汽車市場超過一半的比例,那么這可能意味著消費

者更傾向于購買較小型號的汽車,或者他們更注重燃油經(jīng)濟性和實用性,因為

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

5.2.3依據(jù)車輛價格進行統(tǒng)計和分析

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

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

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

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

溫馨提示

  • 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論