房天下網(wǎng)站長(zhǎng)沙市新房數(shù)據(jù)采集與分析_第1頁(yè)
房天下網(wǎng)站長(zhǎng)沙市新房數(shù)據(jù)采集與分析_第2頁(yè)
房天下網(wǎng)站長(zhǎng)沙市新房數(shù)據(jù)采集與分析_第3頁(yè)
房天下網(wǎng)站長(zhǎng)沙市新房數(shù)據(jù)采集與分析_第4頁(yè)
房天下網(wǎng)站長(zhǎng)沙市新房數(shù)據(jù)采集與分析_第5頁(yè)
已閱讀5頁(yè),還剩25頁(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.3Jypyternotebook簡(jiǎn)介3

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

2需求分析4

2.1可行性需求分析4

2.1.1技術(shù)可行性4

2.1.2項(xiàng)目可行性5

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

2.3技術(shù)分析6

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

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

2.3.3可視化技術(shù)7

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

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

3.2字段分析11

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

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

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

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

4.3完整代碼實(shí)現(xiàn)22

5數(shù)據(jù)可視化與分析24

5.1前期準(zhǔn)備24

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

I

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

5.2.1行政區(qū)平方新房單價(jià)分析25

5.2.2新房戶型占比分析26

5.2.3新房數(shù)量占比分析27

5.3本章小結(jié)28

6小結(jié)28

參考資料28

II

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

房天下網(wǎng)站長(zhǎng)沙市新房數(shù)據(jù)采集與分析

1引言

隨著互聯(lián)網(wǎng)的發(fā)展以及移動(dòng)互聯(lián)網(wǎng)的興起,信息化社會(huì)的普及,社會(huì)和經(jīng)

濟(jì)的發(fā)展更加快捷,變化也更加多元化。伴隨著經(jīng)濟(jì)、科技及社會(huì)的發(fā)展,人

們生活方式和習(xí)慣也在發(fā)生著巨大的變化。這一切都使得大量的數(shù)據(jù)產(chǎn)生,而

大數(shù)據(jù)技術(shù)也正在發(fā)揮其重要作用。

大數(shù)據(jù)技術(shù)是指結(jié)合了計(jì)算機(jī)科學(xué)、數(shù)據(jù)庫(kù)技術(shù)、統(tǒng)計(jì)學(xué)、計(jì)算機(jī)視覺(jué)等

多種技術(shù),以及大量的數(shù)據(jù),以收集、存儲(chǔ)、處理、分析、可視化等方式,來(lái)

處理海量的數(shù)據(jù),從而更快的獲取有效的信息,更深入的分析數(shù)據(jù),從而支持

決策和發(fā)現(xiàn)新的知識(shí)。大數(shù)據(jù)技術(shù)在許多方面都發(fā)揮著重要作用,如社會(huì)、科

學(xué)、商業(yè)、軍事、教育等。

大數(shù)據(jù)技術(shù)的發(fā)展已經(jīng)帶來(lái)了智能化的生活方式,如智能家居、智能機(jī)器

人、自動(dòng)駕駛等。這些技術(shù)的發(fā)展,不僅可以改善人們的日常生活,還可以提

高工作效率,減少工作量,節(jié)省時(shí)間。智能化的生活,讓人們的日常生活變得

更加便捷,更加舒適。大數(shù)據(jù)技術(shù)的發(fā)展也為社會(huì)發(fā)展提供了更多的可能性,

它可以更好的幫助人們解決復(fù)雜的問(wèn)題,推動(dòng)社會(huì)進(jìn)步。

1.1項(xiàng)目背景

近幾年來(lái),隨著信息技術(shù)的發(fā)展,大量的房產(chǎn)信息集中在國(guó)內(nèi)房產(chǎn)網(wǎng)站之

一的房天下上。不論是買房還是租房,或是投資房市,房天下都能提供極具參

考價(jià)值的最新房地產(chǎn)信息,并且擁有龐大的數(shù)據(jù)量。因此有必要對(duì)房天下上收

集的房產(chǎn)信息進(jìn)行采集與分析,以有效地挖掘有價(jià)值的信息和結(jié)論。

本次畢業(yè)設(shè)計(jì)的任務(wù)是利用python編程語(yǔ)言,通過(guò)爬蟲(chóng)技術(shù)完成對(duì)房天下

網(wǎng)站上的數(shù)據(jù)的采集,并通過(guò)相關(guān)的分析工具,對(duì)其中的信息進(jìn)行數(shù)據(jù)清洗與

處理,以獲取有效信息。另外本次采用的還有數(shù)據(jù)可視化技術(shù)手段,有助于更

好地理解相關(guān)數(shù)據(jù)。

本次畢業(yè)設(shè)計(jì)將在Python語(yǔ)言作為技術(shù)支持,借助網(wǎng)絡(luò)爬蟲(chóng)、數(shù)據(jù)清洗、

數(shù)據(jù)可視化等多種技術(shù)手段,對(duì)房天下網(wǎng)站上的數(shù)據(jù)采集與分析,找出有價(jià)值

的結(jié)論,從而對(duì)房地產(chǎn)市場(chǎng)有有效、準(zhǔn)確地分析,從而有助于投資者和買賣雙

方做出更佳的決策。

1

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

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

1.2.1Python簡(jiǎn)介

Python是一種面向?qū)ο蟮慕忉屝陀?jì)算機(jī)程序設(shè)計(jì)語(yǔ)言,由Guidovan

Rossum于1989年發(fā)明,第一個(gè)公開(kāi)發(fā)行版發(fā)行于1991年。Python是純粹的自

由軟件,源代碼和解釋器CPython遵循GPL(GNUGeneralPublicLicense)協(xié)議。

Python語(yǔ)法簡(jiǎn)潔清晰,特色之一是強(qiáng)制用空白符(whitespace)作為語(yǔ)句縮

進(jìn)。Python具有豐富和強(qiáng)大的庫(kù)。它常被昵稱為膠水語(yǔ)言,能夠把用其他語(yǔ)言

制作的各種模塊(尤其是C/C++)很輕松地聯(lián)結(jié)在一起。

在Python中,代碼段的實(shí)現(xiàn)是通過(guò)函數(shù)和類來(lái)實(shí)現(xiàn)的,這使得代碼更加靈

活和可重用。Python支持多種編程范式,如面向?qū)ο?,函?shù)式,命令式等,這

使得Python適用于不同的編程領(lǐng)域。

Python最初被設(shè)計(jì)用于簡(jiǎn)化系統(tǒng)管理任務(wù),特別是Linux系統(tǒng)管理,但是

現(xiàn)在它已經(jīng)被用于多個(gè)領(lǐng)域,如科學(xué)計(jì)算、網(wǎng)絡(luò)編程、數(shù)據(jù)可視化、游戲開(kāi)發(fā)

等。Python也被廣泛應(yīng)用于企業(yè)級(jí)應(yīng)用開(kāi)發(fā),如ERP、CRM等。

Python的設(shè)計(jì)哲學(xué)是“優(yōu)雅、明確、簡(jiǎn)單”,它擁有極其豐富的標(biāo)準(zhǔn)庫(kù),

支持跨平臺(tái),具有強(qiáng)大的第三方庫(kù),它是一門優(yōu)秀的通用編程語(yǔ)言,深受廣大

開(kāi)發(fā)者和程序員的喜愛(ài)。

1.2.2PyCharm簡(jiǎn)介

PyCharm是一款基于純Python的集成開(kāi)發(fā)環(huán)境(IDE),它被廣泛用于各種

Python開(kāi)發(fā)。PyCharm的核心功能包括編輯、運(yùn)行、調(diào)試、搜索Python代碼。

其內(nèi)置的編輯器用于支持復(fù)雜的選項(xiàng),比如代碼補(bǔ)全、智能提示和代碼重構(gòu),

它可以自動(dòng)檢測(cè)和修復(fù)潛在問(wèn)題,從而提高Python應(yīng)用的性能和可維護(hù)性。

PyCharm不僅支持Python編程,還支持其他編程語(yǔ)言,如HTML、CSS、

JavaScript,它可以在瀏覽器中進(jìn)行調(diào)試,以及在其他編程語(yǔ)言和框架上構(gòu)建

強(qiáng)大的Web應(yīng)用程序。PyCharm提供了許多插件,可定制以滿足任何Python開(kāi)

發(fā)人員的需求。

此外,PyCharm提供了一組和流行數(shù)據(jù)庫(kù)技術(shù)(如MySQL,Oracle等)的強(qiáng)

大工具,可以在數(shù)據(jù)庫(kù)中進(jìn)行編程,如SQL語(yǔ)句編寫(xiě),查詢編寫(xiě)等。

PyCharm的有點(diǎn)和優(yōu)勢(shì)讓它成為一流的PythonIDE。它比其他IDE具有良好

的可擴(kuò)展性,可使用插件來(lái)個(gè)性化Python開(kāi)發(fā)環(huán)境,這樣開(kāi)發(fā)者可以最大程度

2

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

地滿足它們的需求,尤其是大型項(xiàng)目。此外,它具有極快的編譯和調(diào)試速度,

可以極大地提高開(kāi)發(fā)效率,它還有復(fù)雜的檢查和檢查工具,可檢測(cè)Python代碼

中的錯(cuò)誤,從而加快開(kāi)發(fā)時(shí)間。

總的來(lái)說(shuō),PyCharm是一款功能強(qiáng)大的PythonIDE,可以為Python開(kāi)發(fā)人

員提供各種強(qiáng)大的工具,大大提高Python應(yīng)用程序的開(kāi)發(fā)效率,使開(kāi)發(fā)更輕松

高效。

1.2.3Jypyternotebook簡(jiǎn)介

JupyterNotebook是一款基于Web的交互式計(jì)算機(jī)編程環(huán)境,它允許數(shù)據(jù)

科學(xué)家,可視化程序員和其他研究人員輕松地創(chuàng)建,編輯和共享他們的計(jì)算工

作。該工具是基于Python開(kāi)發(fā)的,可以與多種編程語(yǔ)言(例如R,Julia和

JavaScript)集成,可支持實(shí)時(shí)代碼執(zhí)行,可以用圖表進(jìn)行實(shí)時(shí)可視化,并支

持大量文件格式(例如.jpg,.pdf,.md,.xlsx)和數(shù)據(jù)類型(例

如.csv,.json)。

基于Web的交互式環(huán)境使學(xué)生及其他研究者可以在任何計(jì)算機(jī)上開(kāi)發(fā)實(shí)時(shí)

可視化和分析,而不必?fù)碛幸慌_(tái)安裝繁復(fù)的本地計(jì)算機(jī)。該交互式環(huán)境提供了

一個(gè)更直觀的可視化界面來(lái)支持?jǐn)?shù)據(jù)科學(xué),深度學(xué)習(xí)和機(jī)器學(xué)習(xí)的實(shí)時(shí)任務(wù),

同時(shí)能夠進(jìn)行更有效的探索性研究。這種可視化環(huán)境支持大量的表格數(shù)據(jù),文

本文件和文檔,并提供即時(shí)可視化功能,以幫助使用者更深入地了解數(shù)據(jù)。此

外,該環(huán)境可讓人們創(chuàng)建功能強(qiáng)大的在線課程和實(shí)驗(yàn)材料,允許課堂上進(jìn)行實(shí)

時(shí)可視化操作,以及通過(guò)導(dǎo)出分析結(jié)果來(lái)實(shí)現(xiàn)動(dòng)態(tài)可視化效果。

綜上所述,JupyterNotebook為學(xué)生提供了簡(jiǎn)便的可視化分析工具,可以

創(chuàng)建即時(shí)可視化課程和實(shí)驗(yàn),以深入了解數(shù)據(jù)科學(xué)。通過(guò)支持多種編程語(yǔ)言,

大量文件格式和數(shù)據(jù)類型,該工具為實(shí)時(shí)可視化中的分析難題提供了廣泛的可

能性。

1.2.4Python部分第三方庫(kù)與包簡(jiǎn)介

urllib:urllib是Python的一個(gè)用于處理URL的可擴(kuò)展庫(kù)。它定義了一些

類和方法,通過(guò)這些類和方法,可以抓取和處理數(shù)據(jù)、對(duì)URL進(jìn)行編解碼、以

及其他大量用于Web技術(shù)的任務(wù)。由于它為應(yīng)用程序提供了訪問(wèn)Internet的

功能,所以有時(shí)也稱為Internet接口庫(kù)。

BeautifulSoup:BeautifulSoup是一個(gè)可以從HTML或XML文件中提取數(shù)據(jù)

的Python庫(kù)。它可以自動(dòng)將輸入文檔轉(zhuǎn)換為Unicode編碼,并使用簡(jiǎn)單,python

3

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

式解析文檔。它提供具有查找特定元素,提取數(shù)據(jù),操縱樹(shù)形結(jié)構(gòu)等功能,可

以很容易地提取數(shù)據(jù)結(jié)構(gòu)化信息,因此它是網(wǎng)頁(yè)爬蟲(chóng)開(kāi)發(fā)的好幫手。

re:re是Python的一個(gè)正則表達(dá)式庫(kù),它的功能是使用描述文本中的一

些模式的字符組合來(lái)分析和處理文本數(shù)據(jù)。它有一個(gè)叫compile的函數(shù),可以

編譯一個(gè)正則表達(dá)式模式,這個(gè)模式可以在文本中進(jìn)行搜索和替換,支持多種

模式選項(xiàng),因此,它是處理非結(jié)構(gòu)化數(shù)據(jù)的非常好的幫助。

random:random是Python中一個(gè)常用的模塊,用于產(chǎn)生隨機(jī)數(shù)。它提供

了一系列函數(shù),可以生成隨機(jī)數(shù),打亂序列順序等,是機(jī)器學(xué)習(xí)和數(shù)據(jù)科學(xué)中

常用的工具,可以很好地幫助實(shí)現(xiàn)類似隨機(jī)采樣和誤差分析等操作。

tqdm:tqdm是一個(gè)Python庫(kù),用于構(gòu)建一個(gè)可視化進(jìn)度條,可以讓用戶

能夠查看當(dāng)前執(zhí)行任務(wù)的進(jìn)度。它在處理循環(huán)和迭代等計(jì)算密集型任務(wù)時(shí)非常

有用,可以幫助用戶更好地了解任務(wù)的運(yùn)行進(jìn)度,是一個(gè)不可或缺的工具。

gzip:gzip是一種壓縮文件的程序,可以有效減少文件的大小,從而節(jié)省

磁盤(pán)空間。它可以將大型文件壓縮到只有原文件大小的一小部分,同時(shí)保持原

始文件的質(zhì)量和內(nèi)容。它還可以用于安全加密,以防止文件被未經(jīng)授權(quán)的用戶

訪問(wèn)。

panda:panda是Python的一個(gè)數(shù)據(jù)處理庫(kù),有助于快速方便地處理數(shù)據(jù)。

它提供了高級(jí)數(shù)據(jù)結(jié)構(gòu)和工具,可以輕松快速地處理結(jié)構(gòu)化和時(shí)間序列數(shù)據(jù),

讓用戶可以節(jié)省大量時(shí)間和精力,是許多分析工作不可或缺的一部分。

Matplotlib.pyplot:Matplotlib.pyplot是一個(gè)基于matplotlib庫(kù)的

python圖形繪制圖形的模塊,它可以繪制出各種靜態(tài)或動(dòng)態(tài)圖形,如線圖、條

形圖、曲線圖、餅圖等。

2需求分析

2.1可行性需求分析

2.1.1技術(shù)可行性

Python語(yǔ)言聲明性、具有高度可擴(kuò)展性,在數(shù)據(jù)分析、獲取、清洗、預(yù)處

理、可視化中得到了廣泛的使用。

在使用Python編寫(xiě)程序來(lái)實(shí)現(xiàn)對(duì)房天下數(shù)據(jù)的獲取、清洗、預(yù)處理、可視

化的技術(shù)可行性的問(wèn)題上,我們可以主要基于以下三個(gè)方面:一、數(shù)據(jù)獲取,

通過(guò)Python編寫(xiě)靜態(tài)爬蟲(chóng)程序,可以獲取房天下數(shù)據(jù)。二、數(shù)據(jù)清洗,使用

4

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

Python中的pandas庫(kù)和re庫(kù),可以實(shí)現(xiàn)多種數(shù)據(jù)處理操作,實(shí)現(xiàn)對(duì)房天下數(shù)

據(jù)的清洗加工和預(yù)處理操作。三、可視化,使用Python中的Matplotlib庫(kù),

可以實(shí)現(xiàn)數(shù)據(jù)可視化處理。

綜上所述,使用Python編程來(lái)實(shí)現(xiàn)對(duì)房天下數(shù)據(jù)的獲取、清洗、預(yù)處理、

可視化,具有很高的技術(shù)可行性。

2.1.2項(xiàng)目可行性

房天下網(wǎng)站上提供了大量的住房信息數(shù)據(jù),可以用于數(shù)據(jù)采集和分析。房

天下網(wǎng)是國(guó)內(nèi)最大的房地產(chǎn)網(wǎng)站,注冊(cè)用戶超過(guò)4000萬(wàn),每天瀏覽量超過(guò)3億

次。網(wǎng)站統(tǒng)計(jì)的全部住房信息數(shù)據(jù)覆蓋著全國(guó)所有城市的住房信息,包括價(jià)格、

面積、所在行政區(qū)以及相關(guān)的政策等,涵蓋的項(xiàng)目都是及其全面且詳盡的,可

以滿足各種類型的住房分析需求,可以更好地提升數(shù)據(jù)采集分析項(xiàng)目的可行性。

此外,網(wǎng)站版本也在不斷更新,為用戶提供各種關(guān)于房屋信息的查詢服務(wù),

包括住房?jī)r(jià)格趨勢(shì)、新房信息、租房信息以及房屋貸款等相關(guān)信息,因此,很

容易獲取大量數(shù)據(jù),并進(jìn)行深入的分析,從而大大提升了項(xiàng)目的可行性。

總之房天下網(wǎng)站提供了多種可分析數(shù)據(jù),能夠?yàn)閿?shù)據(jù)分析項(xiàng)目收集大量有

價(jià)值的數(shù)據(jù),因此該項(xiàng)目是非常可行的。

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

本次項(xiàng)目的數(shù)據(jù)集來(lái)自房天下網(wǎng),是通過(guò)python爬取長(zhǎng)沙的新房的房屋信

息。通過(guò)數(shù)據(jù)清洗,共獲取了660條新房數(shù)據(jù)。為保證爬取的數(shù)據(jù)的準(zhǔn)確性,

采取了一系列的措施,對(duì)爬取出來(lái)的數(shù)據(jù)進(jìn)行了詳細(xì)的檢查,確保爬取出來(lái)的

數(shù)據(jù)無(wú)誤,并且能夠滿足本次研究要求。本次爬取的總數(shù)據(jù)條數(shù)達(dá)到660條,

這些數(shù)據(jù)會(huì)在分析過(guò)程中進(jìn)行有效利用,為本次項(xiàng)目提供可靠的結(jié)果。

為了對(duì)房天下網(wǎng)站網(wǎng)頁(yè)信息進(jìn)行分析,首先要明確我們需要爬取的新房

房屋參數(shù),新房參數(shù)有名稱、戶型、面積、地址、價(jià)格;在進(jìn)行數(shù)據(jù)清洗之后,

對(duì)數(shù)據(jù)進(jìn)行多維度分析可以讓我們更利于了解房源信息變化情況,達(dá)到如何購(gòu)

買投資的目的,如行政區(qū)以及價(jià)格(元/㎡)分析,可以查看每個(gè)行政區(qū)最高新房

單價(jià),從而判斷出哪個(gè)行政區(qū)新房?jī)r(jià)格較貴,哪個(gè)行政區(qū)新房?jī)r(jià)格較為實(shí)惠;

此外,我們也可以分析某個(gè)行政區(qū)的新房數(shù)量占比,根據(jù)其新房數(shù)量占比來(lái)評(píng)

估該行政區(qū)投資價(jià)值,從而判斷出哪個(gè)房屋新房投資較為有利,哪個(gè)行政區(qū)投

資較為不利,讓用戶可以據(jù)此做出投資理財(cái)收益最大化的決定。

5

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

2.3技術(shù)分析

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

網(wǎng)絡(luò)爬蟲(chóng)是計(jì)算機(jī)信息獲取的一種重要技術(shù)。網(wǎng)絡(luò)爬蟲(chóng)也稱為網(wǎng)絡(luò)蜘蛛、

Web爬蟲(chóng)、螞蟻采集等,通過(guò)自動(dòng)抓取網(wǎng)絡(luò)上的信息,并建立相應(yīng)的數(shù)據(jù)庫(kù),是

一種數(shù)據(jù)抓取實(shí)現(xiàn)的技術(shù)。

要實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲(chóng)需要考慮的因素:首先,爬蟲(chóng)的頁(yè)面發(fā)現(xiàn),它抓取網(wǎng)頁(yè)中

的URL,并建立一個(gè)URL隊(duì)列,讓爬蟲(chóng)去爬??;其次,爬蟲(chóng)的數(shù)據(jù)抓取,它從網(wǎng)

絡(luò)上獲取所需要的數(shù)據(jù);再次,爬蟲(chóng)的文件處理,它將網(wǎng)頁(yè)上的內(nèi)容保存到本

地硬盤(pán)中,或者使用簡(jiǎn)單的分析進(jìn)行文本抽??;最后,爬蟲(chóng)的數(shù)據(jù)導(dǎo)出,將抽

取的數(shù)據(jù)保存到數(shù)據(jù)庫(kù)或者文件中,進(jìn)行分析和處理。

網(wǎng)絡(luò)爬蟲(chóng)可以自動(dòng)抓取當(dāng)前的網(wǎng)頁(yè)信息,也可以實(shí)現(xiàn)定時(shí)的數(shù)據(jù)抓取。目

前,常用的網(wǎng)絡(luò)爬蟲(chóng)主要有Python的Scrapy、BeautifulSoup4、Selenium等。

本項(xiàng)目使用的是BeautifulSoup4。這些常用的網(wǎng)絡(luò)爬蟲(chóng)的使用包括模擬HTTP請(qǐng)

求、解析HTML文件等,讓爬蟲(chóng)可以訪問(wèn)網(wǎng)絡(luò)上的信息,從而把數(shù)據(jù)自動(dòng)抓取到

本地。

網(wǎng)絡(luò)爬蟲(chóng)分析有許多方面。首先,在實(shí)施網(wǎng)絡(luò)爬蟲(chóng)抓取之前,要清楚網(wǎng)絡(luò)

爬蟲(chóng)的性能要求:爬蟲(chóng)抓取數(shù)據(jù)的量、反應(yīng)時(shí)間以及響應(yīng)網(wǎng)頁(yè)數(shù)量等;其次,

要考慮網(wǎng)絡(luò)爬蟲(chóng)抓取的準(zhǔn)確性和穩(wěn)定性,即可靠性;再次,要考慮到由網(wǎng)絡(luò)爬

蟲(chóng)抓取數(shù)據(jù)的準(zhǔn)確性,保證抓取到的內(nèi)容可被正確處理;最后,要注意網(wǎng)絡(luò)爬

蟲(chóng)抓取時(shí)所造成的負(fù)載問(wèn)題,以及如何優(yōu)化網(wǎng)絡(luò)爬蟲(chóng)抓取的效率,使其達(dá)到最

佳狀態(tài)。

因此,在實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲(chóng)時(shí),要注意很多問(wèn)題,包括數(shù)據(jù)抓取的準(zhǔn)確性和性

能要求,以及存在的負(fù)載問(wèn)題。

2.3.2文件存取技術(shù)

DataFrame對(duì)象的to_excel方法如圖2-1顯示:

6

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

圖2-1DataFrame對(duì)象的to_excel方法

2.3.3可視化技術(shù)

可視化技術(shù)是根據(jù)傳統(tǒng)圖形學(xué),交互式圖形和計(jì)算機(jī)科學(xué)理論而發(fā)展起來(lái)

的一種實(shí)現(xiàn)信息報(bào)表、分析和展示的新型技術(shù)。可視化技術(shù)可以把復(fù)雜的數(shù)據(jù)

和信息轉(zhuǎn)換為圖表、條形圖等非常有趣而抽象的圖形,進(jìn)而將數(shù)據(jù)和信息可視

化。

由于可視化技術(shù)運(yùn)用了多種數(shù)字、圖形和文本,借助技術(shù)以及多種插圖、

圖表實(shí)現(xiàn)信息的有效表達(dá),因而在多個(gè)行業(yè)領(lǐng)域得到了廣泛的應(yīng)用。各行業(yè)審

視歷史記錄、探索未來(lái)趨勢(shì)、壓縮大量數(shù)據(jù)源、比較各種數(shù)據(jù)資源等等,都可

以通過(guò)可視化技術(shù)實(shí)現(xiàn)這些目標(biāo)。

可視化技術(shù)使用很廣泛,不但廣泛應(yīng)用于教育、政府、企業(yè)等各種領(lǐng)域,

而且在工業(yè)界,醫(yī)學(xué)界,社會(huì)科學(xué),技術(shù)界都用到了可視化技術(shù)。

總的來(lái)說(shuō),可視化技術(shù)不僅是一種非常強(qiáng)大的數(shù)據(jù)分析手段,而且還能夠

有效的顯示、處理和存儲(chǔ)數(shù)據(jù)信息。

可視化技術(shù)通過(guò)一組可視的圖表實(shí)現(xiàn)了大量原始數(shù)據(jù)的壓縮,經(jīng)過(guò)統(tǒng)計(jì)分

析,將大量復(fù)雜的信息轉(zhuǎn)化為可視性高、易于理解及處理的數(shù)據(jù)。數(shù)據(jù)展示經(jīng)

過(guò)數(shù)據(jù)處理,可視化技術(shù)可以有效地避免由于樣本量不足而引發(fā)的局部性偏差。

可視化技術(shù)可以顯示出數(shù)據(jù)和模型之間的關(guān)系,結(jié)合圖表和動(dòng)畫(huà),有助于人們

對(duì)數(shù)據(jù)和模型的理解。

隨著數(shù)據(jù)的不斷增長(zhǎng),傳統(tǒng)的信息處理手段顯得不足以解決多樣化的信息

訪問(wèn)和共享任務(wù)。因此,可視化技術(shù)在未來(lái)會(huì)得到進(jìn)一步發(fā)展,同時(shí)還會(huì)受到

人工智能技術(shù)的大力支持,并為各種信息處理和使用任務(wù)提供極大的便利。

此外,未來(lái)可視化技術(shù)還會(huì)進(jìn)一步完善,通過(guò)引入更加智能的模型,幫助

用戶理解、解讀和探索大量數(shù)據(jù),支持大數(shù)據(jù)分析任務(wù)。

7

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

可視化技術(shù)既是對(duì)大空間和大時(shí)間量數(shù)據(jù)進(jìn)行可視化表征,又可以將復(fù)雜

的數(shù)據(jù)抽象到圖形和標(biāo)記上,從而有效地處理大規(guī)模復(fù)雜的數(shù)據(jù),成為大數(shù)據(jù)

分析的重要基礎(chǔ)。未來(lái)可視化技術(shù)將成為科學(xué)家探索、數(shù)據(jù)分析和商業(yè)組織決

策的重要工具,必將受到廣大用戶的熱烈歡迎。

本項(xiàng)目主要使用Python中的Matplotlib庫(kù)畫(huà)出條形圖等簡(jiǎn)單圖形,使結(jié)

果更加直觀,從而得出有用的結(jié)論。

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

3.1采集頁(yè)面分析

訪問(wèn)房天下官網(wǎng)的長(zhǎng)沙新房頁(yè)面,觀察圖3-1、3-2、3-3發(fā)現(xiàn)URL是以

/house/s/b開(kāi)頭,以步長(zhǎng)1遞增的數(shù)字結(jié)尾,

例如91、92、93訪問(wèn)不同頁(yè)面。可以看出URL規(guī)則簡(jiǎn)單明了,變化只需要改變

結(jié)尾數(shù)字就可以實(shí)現(xiàn)頁(yè)面跳轉(zhuǎn)。循環(huán)訪問(wèn)的URL也就找出了。

/house/s/b91訪問(wèn)房天下長(zhǎng)沙新房第1頁(yè)。

圖3-1房天下長(zhǎng)沙新房第1頁(yè)

8

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

/house/s/b92訪問(wèn)房天下長(zhǎng)沙新房第2頁(yè)。

圖3-2房天下長(zhǎng)沙新房第2頁(yè)

/house/s/b93訪問(wèn)房天下長(zhǎng)沙新房第3頁(yè)。

圖3-3房天下長(zhǎng)沙新房第3頁(yè)

F12查看頁(yè)面結(jié)構(gòu),發(fā)現(xiàn)每條房屋數(shù)據(jù)都在同一個(gè)ul標(biāo)簽下各個(gè)li標(biāo)簽中。

9

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

ul標(biāo)簽是一頁(yè)的所有數(shù)據(jù)。

圖3-4房天下長(zhǎng)沙新房頁(yè)面結(jié)構(gòu)1

li標(biāo)簽是一條房源信息。

圖3-5房天下長(zhǎng)沙新房頁(yè)面結(jié)構(gòu)2

驗(yàn)證li是一條房源信息。

10

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

圖3-6房天下長(zhǎng)沙新房頁(yè)面結(jié)構(gòu)3

3.2字段分析

觀察單個(gè)li標(biāo)簽發(fā)現(xiàn)所需數(shù)據(jù)都在div.nlc_details下,通過(guò)觀察單個(gè)li

標(biāo)簽,可以得到所需采集的字段包括:名稱、戶型、面積、行政區(qū)和價(jià)格。其

中,名稱通過(guò).nlcd_namea選擇器獲取,戶型和面積則需要進(jìn)行一定的處理,

因?yàn)榭赡艹霈F(xiàn)只有戶型或只有面積的情況。行政區(qū)通過(guò).addressspan.sngrey

選擇器獲取,價(jià)格通過(guò)'.nhouse_price加正則表達(dá)式獲取。

11

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

圖3-7字段分析1

12

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

名稱字段分析,位于class為nlcd_name的div下的a標(biāo)簽內(nèi)。

圖3-8字段分析2

戶型與面積字段分析,位于class為house_type的div內(nèi)。

圖3-9字段分析3

13

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

行政區(qū)字段分析,位于class為address的div下,class為sngrey的span

標(biāo)簽內(nèi)。

圖3-10字段分析4

價(jià)格字段分析,位于class為address的div內(nèi)。

圖3-11字段分析5

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

1.導(dǎo)包

14

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

圖3-12新房數(shù)據(jù)采集1

2.數(shù)據(jù)請(qǐng)求構(gòu)建

圖3-13新房數(shù)據(jù)采集2

3.數(shù)據(jù)解析

15

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

圖3-14新房數(shù)據(jù)采集3

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

圖3-15新房數(shù)據(jù)采集4

5.保存文件

圖3-16新房數(shù)據(jù)采集5

6.主函數(shù)

16

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

圖3-17新房數(shù)據(jù)采集6

完整代碼如下:

#_*_coding:utf-8_*_

importurllib

frombs4importBeautifulSoup

importre

importrandom

fromtqdmimporttqdm

importpandasaspd

'''爬取新房數(shù)據(jù)存入excel'''

#數(shù)據(jù)請(qǐng)求構(gòu)建

defdata_request(url):

user_agents=list({

'Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,like

Gecko)Chrome/39.0.2171.95Safari/537.36OPR/26.0.1656.60',

'Opera/8.0(WindowsNT5.1;U;en)',

'Mozilla/5.0(WindowsNT5.1;U;en;rv:1.8.1)Gecko/20061208Firefox/2.0.0

Opera9.50',

'Mozilla/4.0(compatible;MSIE6.0;WindowsNT5.1;en)Opera9.50',

'Mozilla/5.0(WindowsNT6.1;WOW64;rv:34.0)Gecko/20100101

Firefox/34.0'})

headers={

'Cookie':'',

'User-Agent':str(random.choice(user_agents)),

'Connection':'keep-alive',

17

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

}

req=urllib.request.Request(url,headers=headers)

resp=urllib.request.urlopen(req)

content=resp.read().decode('utf-8')

returncontent

#數(shù)據(jù)解析

defdata_analysis(content):

html=content

soup=BeautifulSoup(content,'html.parser')

returnsoup

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

defdata_storage(soup):

one_page_data=[]

item_list=soup.select('#newhouse_loupan_list>ul>li')

foriinitem_list:

#{'名稱':None,'戶型':None,'面積':None,'地址':None,'價(jià)格'}

item={}

item['名稱']=i.select('.nlcd_namea')[0].text.strip()

n=len(''.join(i.select('.house_type')[0].text.split()).split('—'))

ifn==0:

item['戶型'],item['面積']='',''

elifn==1:

item['戶型']=''.join(i.select('.house_type')[0].text.split()).split('—')[0]

item['面積']=''

else:

item['戶型'],item['面積']=

''.join(i.select('.house_type')[0].text.split()).split('—')

item['面積']=item['面積'].replace('平米','')

item['行政區(qū)']=i.select('.addressspan.sngrey')

iflen(item['行政區(qū)'])==0:

item['行政區(qū)']=''

else:

item['行政區(qū)']=item['行政區(qū)'][0].text.replace('[','').replace(']','')

item['價(jià)格(元/㎡)']=''.join(re.findall(r'\d',i.select('.nhouse_price')[0].text))

one_page_data.append(item)

returnone_page_data

18

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

#保存文件

defdata_files(all_page_data,save_path):

df=pd.DataFrame(all_page_data)

df.to_excel(save_path)

#主函數(shù)

if__name__=='__main__':

new_all_data=[]

page=33

foriintqdm(range(1,page+1)):

url=f'/house/s/b9{i}/'

content=data_request(url)

soup=data_analysis(content)

one_page_data=data_storage(soup)

new_all_data.extend(one_page_data)

data_files(new_all_data,'../數(shù)據(jù)/房天下新房數(shù)據(jù).xlsx')

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

數(shù)據(jù)清洗與處理主要是為了使得數(shù)據(jù)更加適合分析和運(yùn)算的要求,把原始

的數(shù)據(jù)轉(zhuǎn)換讓目標(biāo)任務(wù)的分析會(huì)更加容易、準(zhǔn)確。需要注意的是,要使得數(shù)據(jù)

清洗后有高質(zhì)量,就必須充分認(rèn)識(shí)清洗過(guò)程中可能存在的缺陷,并有意于改進(jìn),

充分考慮數(shù)據(jù)類型、空白值、異常值等處理方式。

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

對(duì)房天下新房數(shù)據(jù)的清洗,包括清洗行政區(qū)字段中的\t和\n、處理戶型字

段、處理面積字段、將行政區(qū)字段進(jìn)行統(tǒng)一等。最后按照名稱、戶型、面積、

行政區(qū)、價(jià)格的順序重新排列列的順序,并將清洗后的數(shù)據(jù)存入Excel文件。

1.導(dǎo)包和獲取數(shù)據(jù)

圖4-1新房數(shù)據(jù)清洗1

2.清洗行政區(qū)\t\n

圖4-2新房數(shù)據(jù)清洗2

19

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

3.處理戶型字段

圖4-3新房數(shù)據(jù)清洗3

4.處理面積字段

圖4-4新房數(shù)據(jù)清洗4

20

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

5.錯(cuò)誤數(shù)據(jù)更改

圖4-5新房數(shù)據(jù)清洗5

6.重排columns順序

圖4-6新房數(shù)據(jù)清洗6

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

數(shù)據(jù)的儲(chǔ)存作用在于以可靠、及時(shí)的方式以便隨時(shí)收集和瀏覽。儲(chǔ)存的數(shù)

據(jù)可利用于繪制出視覺(jué)化的統(tǒng)計(jì)圖表,把大量數(shù)據(jù)統(tǒng)籌歸納,可以表達(dá)出更復(fù)

雜的社會(huì)現(xiàn)象,為明智地做出多項(xiàng)決策,提供重要依據(jù)。換言之,數(shù)據(jù)儲(chǔ)存有

效地提供了體積統(tǒng)計(jì)分析手段,幫助決策者及時(shí)把握社會(huì)信息,進(jìn)行合理安排,

以便在最大限度地發(fā)揮有效性??紤]到數(shù)據(jù)量和存儲(chǔ)及使用難易程度該項(xiàng)目使

用excel進(jìn)行存儲(chǔ)。

圖4-7新房清洗后數(shù)據(jù)存儲(chǔ)

每條數(shù)據(jù)有名稱,一居,二居,三居,四居,五居,五居以上,最小面積

(㎡),最大面積(㎡),行政區(qū),價(jià)格(元/㎡)這些字段,共存儲(chǔ)數(shù)據(jù)660條。

21

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

圖4-8存儲(chǔ)數(shù)據(jù)1

圖4-9存儲(chǔ)數(shù)據(jù)2

4.3完整代碼實(shí)現(xiàn)

'''清洗房天下新房數(shù)據(jù)'''

importpandasaspd

#讀取數(shù)據(jù)

df1=pd.read_excel('../數(shù)據(jù)/房天下新房數(shù)據(jù).xlsx',index_col=0)

#清洗行政區(qū)\t\n

df1['行政區(qū)']=df1['行政區(qū)'].str.replace('\t','').str.replace('\n','')

#處理戶型字段

df2=df1.dropna(subset=['戶型'])

#索引:戶型list

hxdict=dict(df2['戶型'].str.split('/'))

22

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

fori,vlistinhxdict.items():

forvinvlist:

df1.loc[i,v]='有'

col_list=df1.columns.tolist()[5:]

forcolincol_list:

df1.loc[df1[col].isna(),col]='無(wú)'

#處理面積字段

df3=df1.dropna(subset=['面積'])

#索引:面積list

mjlist=dict(df3['面積'].str.split('~'))

fori,vlistinmjlist.items():

#只有一個(gè)數(shù)據(jù),最大最小面積一樣

iflen(vlist)==1:

df1.loc[i,'最小面積(㎡)']=vlist[0]

df1.loc[i,'最大面積(㎡)']=vlist[0]

else:

df1.loc[i,'最小面積(㎡)']=vlist[0]

df1.loc[i,'最大面積(㎡)']=vlist[1]

#瀏陽(yáng)市->瀏陽(yáng)

df1.loc[df1['行政區(qū)']=='瀏陽(yáng)市','行政區(qū)']='瀏陽(yáng)'

#玉潭街道->寧鄉(xiāng)

df1.loc[df1['行政區(qū)']=='玉潭街道','行政區(qū)']='寧鄉(xiāng)'

#白馬橋街道->寧鄉(xiāng)

df1.loc[df1['行政區(qū)']=='白馬橋街道','行政區(qū)']='寧鄉(xiāng)'

#重排columns順序

df4=df1.loc[:,['名稱','一居','二居','三居','四居','五居','五居以上','最小面積(㎡)','最大

面積(㎡)','行政區(qū)','價(jià)格(元/㎡)']]

#存入清洗后的數(shù)據(jù)

df4.to_excel('../數(shù)據(jù)/房天下新房數(shù)據(jù)(清洗后).xlsx')

23

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

5數(shù)據(jù)可視化與分析

5.1前期準(zhǔn)備

本項(xiàng)目前期準(zhǔn)備需要導(dǎo)包導(dǎo)入數(shù)據(jù)以及讓圖形中中文以及負(fù)號(hào)正確顯示。

因?yàn)槭莈xcel的數(shù)據(jù)因此可以使用pandas中read_excel函數(shù)直接導(dǎo)入。。

圖5-1前期準(zhǔn)備(新房)

24

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

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

5.2.1行政區(qū)平均新房單價(jià)分析

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

從圖中可以看出,芙蓉區(qū)的平均新房單價(jià)是最高的,而瀏陽(yáng)的平均

溫馨提示

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