版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計
目錄
1引言1
1.1項目背景1
1.2開發(fā)環(huán)境與工具2
1.2.1Python簡介2
1.2.2PyCharm簡介2
1.2.3Jypyternotebook簡介3
1.2.4Python部分第三方庫與包簡介3
2需求分析4
2.1可行性需求分析4
2.1.1技術(shù)可行性4
2.1.2項目可行性5
2.2采集目標功能分析5
2.3技術(shù)分析6
2.3.1網(wǎng)絡(luò)爬蟲技術(shù)6
2.3.2文件存取技術(shù)6
2.3.3可視化技術(shù)7
3數(shù)據(jù)采集8
3.1采集頁面分析8
3.2字段分析11
3.3編程實現(xiàn)14
4數(shù)據(jù)清洗與處理19
4.1數(shù)據(jù)清洗19
4.2數(shù)據(jù)儲存21
4.3完整代碼實現(xiàn)22
5數(shù)據(jù)可視化與分析24
5.1前期準備24
5.2數(shù)據(jù)展示25
I
湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計
5.2.1行政區(qū)平方新房單價分析25
5.2.2新房戶型占比分析26
5.2.3新房數(shù)量占比分析27
5.3本章小結(jié)28
6小結(jié)28
參考資料28
II
湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計
房天下網(wǎng)站長沙市新房數(shù)據(jù)采集與分析
1引言
隨著互聯(lián)網(wǎng)的發(fā)展以及移動互聯(lián)網(wǎng)的興起,信息化社會的普及,社會和經(jīng)
濟的發(fā)展更加快捷,變化也更加多元化。伴隨著經(jīng)濟、科技及社會的發(fā)展,人
們生活方式和習慣也在發(fā)生著巨大的變化。這一切都使得大量的數(shù)據(jù)產(chǎn)生,而
大數(shù)據(jù)技術(shù)也正在發(fā)揮其重要作用。
大數(shù)據(jù)技術(shù)是指結(jié)合了計算機科學、數(shù)據(jù)庫技術(shù)、統(tǒng)計學、計算機視覺等
多種技術(shù),以及大量的數(shù)據(jù),以收集、存儲、處理、分析、可視化等方式,來
處理海量的數(shù)據(jù),從而更快的獲取有效的信息,更深入的分析數(shù)據(jù),從而支持
決策和發(fā)現(xiàn)新的知識。大數(shù)據(jù)技術(shù)在許多方面都發(fā)揮著重要作用,如社會、科
學、商業(yè)、軍事、教育等。
大數(shù)據(jù)技術(shù)的發(fā)展已經(jīng)帶來了智能化的生活方式,如智能家居、智能機器
人、自動駕駛等。這些技術(shù)的發(fā)展,不僅可以改善人們的日常生活,還可以提
高工作效率,減少工作量,節(jié)省時間。智能化的生活,讓人們的日常生活變得
更加便捷,更加舒適。大數(shù)據(jù)技術(shù)的發(fā)展也為社會發(fā)展提供了更多的可能性,
它可以更好的幫助人們解決復(fù)雜的問題,推動社會進步。
1.1項目背景
近幾年來,隨著信息技術(shù)的發(fā)展,大量的房產(chǎn)信息集中在國內(nèi)房產(chǎn)網(wǎng)站之
一的房天下上。不論是買房還是租房,或是投資房市,房天下都能提供極具參
考價值的最新房地產(chǎn)信息,并且擁有龐大的數(shù)據(jù)量。因此有必要對房天下上收
集的房產(chǎn)信息進行采集與分析,以有效地挖掘有價值的信息和結(jié)論。
本次畢業(yè)設(shè)計的任務(wù)是利用python編程語言,通過爬蟲技術(shù)完成對房天下
網(wǎng)站上的數(shù)據(jù)的采集,并通過相關(guān)的分析工具,對其中的信息進行數(shù)據(jù)清洗與
處理,以獲取有效信息。另外本次采用的還有數(shù)據(jù)可視化技術(shù)手段,有助于更
好地理解相關(guān)數(shù)據(jù)。
本次畢業(yè)設(shè)計將在Python語言作為技術(shù)支持,借助網(wǎng)絡(luò)爬蟲、數(shù)據(jù)清洗、
數(shù)據(jù)可視化等多種技術(shù)手段,對房天下網(wǎng)站上的數(shù)據(jù)采集與分析,找出有價值
的結(jié)論,從而對房地產(chǎn)市場有有效、準確地分析,從而有助于投資者和買賣雙
方做出更佳的決策。
1
湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計
1.2開發(fā)環(huán)境與工具
1.2.1Python簡介
Python是一種面向?qū)ο蟮慕忉屝陀嬎銠C程序設(shè)計語言,由Guidovan
Rossum于1989年發(fā)明,第一個公開發(fā)行版發(fā)行于1991年。Python是純粹的自
由軟件,源代碼和解釋器CPython遵循GPL(GNUGeneralPublicLicense)協(xié)議。
Python語法簡潔清晰,特色之一是強制用空白符(whitespace)作為語句縮
進。Python具有豐富和強大的庫。它常被昵稱為膠水語言,能夠把用其他語言
制作的各種模塊(尤其是C/C++)很輕松地聯(lián)結(jié)在一起。
在Python中,代碼段的實現(xiàn)是通過函數(shù)和類來實現(xiàn)的,這使得代碼更加靈
活和可重用。Python支持多種編程范式,如面向?qū)ο?,函?shù)式,命令式等,這
使得Python適用于不同的編程領(lǐng)域。
Python最初被設(shè)計用于簡化系統(tǒng)管理任務(wù),特別是Linux系統(tǒng)管理,但是
現(xiàn)在它已經(jīng)被用于多個領(lǐng)域,如科學計算、網(wǎng)絡(luò)編程、數(shù)據(jù)可視化、游戲開發(fā)
等。Python也被廣泛應(yīng)用于企業(yè)級應(yīng)用開發(fā),如ERP、CRM等。
Python的設(shè)計哲學是“優(yōu)雅、明確、簡單”,它擁有極其豐富的標準庫,
支持跨平臺,具有強大的第三方庫,它是一門優(yōu)秀的通用編程語言,深受廣大
開發(fā)者和程序員的喜愛。
1.2.2PyCharm簡介
PyCharm是一款基于純Python的集成開發(fā)環(huán)境(IDE),它被廣泛用于各種
Python開發(fā)。PyCharm的核心功能包括編輯、運行、調(diào)試、搜索Python代碼。
其內(nèi)置的編輯器用于支持復(fù)雜的選項,比如代碼補全、智能提示和代碼重構(gòu),
它可以自動檢測和修復(fù)潛在問題,從而提高Python應(yīng)用的性能和可維護性。
PyCharm不僅支持Python編程,還支持其他編程語言,如HTML、CSS、
JavaScript,它可以在瀏覽器中進行調(diào)試,以及在其他編程語言和框架上構(gòu)建
強大的Web應(yīng)用程序。PyCharm提供了許多插件,可定制以滿足任何Python開
發(fā)人員的需求。
此外,PyCharm提供了一組和流行數(shù)據(jù)庫技術(shù)(如MySQL,Oracle等)的強
大工具,可以在數(shù)據(jù)庫中進行編程,如SQL語句編寫,查詢編寫等。
PyCharm的有點和優(yōu)勢讓它成為一流的PythonIDE。它比其他IDE具有良好
的可擴展性,可使用插件來個性化Python開發(fā)環(huán)境,這樣開發(fā)者可以最大程度
2
湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計
地滿足它們的需求,尤其是大型項目。此外,它具有極快的編譯和調(diào)試速度,
可以極大地提高開發(fā)效率,它還有復(fù)雜的檢查和檢查工具,可檢測Python代碼
中的錯誤,從而加快開發(fā)時間。
總的來說,PyCharm是一款功能強大的PythonIDE,可以為Python開發(fā)人
員提供各種強大的工具,大大提高Python應(yīng)用程序的開發(fā)效率,使開發(fā)更輕松
高效。
1.2.3Jypyternotebook簡介
JupyterNotebook是一款基于Web的交互式計算機編程環(huán)境,它允許數(shù)據(jù)
科學家,可視化程序員和其他研究人員輕松地創(chuàng)建,編輯和共享他們的計算工
作。該工具是基于Python開發(fā)的,可以與多種編程語言(例如R,Julia和
JavaScript)集成,可支持實時代碼執(zhí)行,可以用圖表進行實時可視化,并支
持大量文件格式(例如.jpg,.pdf,.md,.xlsx)和數(shù)據(jù)類型(例
如.csv,.json)。
基于Web的交互式環(huán)境使學生及其他研究者可以在任何計算機上開發(fā)實時
可視化和分析,而不必擁有一臺安裝繁復(fù)的本地計算機。該交互式環(huán)境提供了
一個更直觀的可視化界面來支持數(shù)據(jù)科學,深度學習和機器學習的實時任務(wù),
同時能夠進行更有效的探索性研究。這種可視化環(huán)境支持大量的表格數(shù)據(jù),文
本文件和文檔,并提供即時可視化功能,以幫助使用者更深入地了解數(shù)據(jù)。此
外,該環(huán)境可讓人們創(chuàng)建功能強大的在線課程和實驗材料,允許課堂上進行實
時可視化操作,以及通過導出分析結(jié)果來實現(xiàn)動態(tài)可視化效果。
綜上所述,JupyterNotebook為學生提供了簡便的可視化分析工具,可以
創(chuàng)建即時可視化課程和實驗,以深入了解數(shù)據(jù)科學。通過支持多種編程語言,
大量文件格式和數(shù)據(jù)類型,該工具為實時可視化中的分析難題提供了廣泛的可
能性。
1.2.4Python部分第三方庫與包簡介
urllib:urllib是Python的一個用于處理URL的可擴展庫。它定義了一些
類和方法,通過這些類和方法,可以抓取和處理數(shù)據(jù)、對URL進行編解碼、以
及其他大量用于Web技術(shù)的任務(wù)。由于它為應(yīng)用程序提供了訪問Internet的
功能,所以有時也稱為Internet接口庫。
BeautifulSoup:BeautifulSoup是一個可以從HTML或XML文件中提取數(shù)據(jù)
的Python庫。它可以自動將輸入文檔轉(zhuǎn)換為Unicode編碼,并使用簡單,python
3
湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計
式解析文檔。它提供具有查找特定元素,提取數(shù)據(jù),操縱樹形結(jié)構(gòu)等功能,可
以很容易地提取數(shù)據(jù)結(jié)構(gòu)化信息,因此它是網(wǎng)頁爬蟲開發(fā)的好幫手。
re:re是Python的一個正則表達式庫,它的功能是使用描述文本中的一
些模式的字符組合來分析和處理文本數(shù)據(jù)。它有一個叫compile的函數(shù),可以
編譯一個正則表達式模式,這個模式可以在文本中進行搜索和替換,支持多種
模式選項,因此,它是處理非結(jié)構(gòu)化數(shù)據(jù)的非常好的幫助。
random:random是Python中一個常用的模塊,用于產(chǎn)生隨機數(shù)。它提供
了一系列函數(shù),可以生成隨機數(shù),打亂序列順序等,是機器學習和數(shù)據(jù)科學中
常用的工具,可以很好地幫助實現(xiàn)類似隨機采樣和誤差分析等操作。
tqdm:tqdm是一個Python庫,用于構(gòu)建一個可視化進度條,可以讓用戶
能夠查看當前執(zhí)行任務(wù)的進度。它在處理循環(huán)和迭代等計算密集型任務(wù)時非常
有用,可以幫助用戶更好地了解任務(wù)的運行進度,是一個不可或缺的工具。
gzip:gzip是一種壓縮文件的程序,可以有效減少文件的大小,從而節(jié)省
磁盤空間。它可以將大型文件壓縮到只有原文件大小的一小部分,同時保持原
始文件的質(zhì)量和內(nèi)容。它還可以用于安全加密,以防止文件被未經(jīng)授權(quán)的用戶
訪問。
panda:panda是Python的一個數(shù)據(jù)處理庫,有助于快速方便地處理數(shù)據(jù)。
它提供了高級數(shù)據(jù)結(jié)構(gòu)和工具,可以輕松快速地處理結(jié)構(gòu)化和時間序列數(shù)據(jù),
讓用戶可以節(jié)省大量時間和精力,是許多分析工作不可或缺的一部分。
Matplotlib.pyplot:Matplotlib.pyplot是一個基于matplotlib庫的
python圖形繪制圖形的模塊,它可以繪制出各種靜態(tài)或動態(tài)圖形,如線圖、條
形圖、曲線圖、餅圖等。
2需求分析
2.1可行性需求分析
2.1.1技術(shù)可行性
Python語言聲明性、具有高度可擴展性,在數(shù)據(jù)分析、獲取、清洗、預(yù)處
理、可視化中得到了廣泛的使用。
在使用Python編寫程序來實現(xiàn)對房天下數(shù)據(jù)的獲取、清洗、預(yù)處理、可視
化的技術(shù)可行性的問題上,我們可以主要基于以下三個方面:一、數(shù)據(jù)獲取,
通過Python編寫靜態(tài)爬蟲程序,可以獲取房天下數(shù)據(jù)。二、數(shù)據(jù)清洗,使用
4
湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計
Python中的pandas庫和re庫,可以實現(xiàn)多種數(shù)據(jù)處理操作,實現(xiàn)對房天下數(shù)
據(jù)的清洗加工和預(yù)處理操作。三、可視化,使用Python中的Matplotlib庫,
可以實現(xiàn)數(shù)據(jù)可視化處理。
綜上所述,使用Python編程來實現(xiàn)對房天下數(shù)據(jù)的獲取、清洗、預(yù)處理、
可視化,具有很高的技術(shù)可行性。
2.1.2項目可行性
房天下網(wǎng)站上提供了大量的住房信息數(shù)據(jù),可以用于數(shù)據(jù)采集和分析。房
天下網(wǎng)是國內(nèi)最大的房地產(chǎn)網(wǎng)站,注冊用戶超過4000萬,每天瀏覽量超過3億
次。網(wǎng)站統(tǒng)計的全部住房信息數(shù)據(jù)覆蓋著全國所有城市的住房信息,包括價格、
面積、所在行政區(qū)以及相關(guān)的政策等,涵蓋的項目都是及其全面且詳盡的,可
以滿足各種類型的住房分析需求,可以更好地提升數(shù)據(jù)采集分析項目的可行性。
此外,網(wǎng)站版本也在不斷更新,為用戶提供各種關(guān)于房屋信息的查詢服務(wù),
包括住房價格趨勢、新房信息、租房信息以及房屋貸款等相關(guān)信息,因此,很
容易獲取大量數(shù)據(jù),并進行深入的分析,從而大大提升了項目的可行性。
總之房天下網(wǎng)站提供了多種可分析數(shù)據(jù),能夠為數(shù)據(jù)分析項目收集大量有
價值的數(shù)據(jù),因此該項目是非??尚械?。
2.2采集目標功能分析
本次項目的數(shù)據(jù)集來自房天下網(wǎng),是通過python爬取長沙的新房的房屋信
息。通過數(shù)據(jù)清洗,共獲取了660條新房數(shù)據(jù)。為保證爬取的數(shù)據(jù)的準確性,
采取了一系列的措施,對爬取出來的數(shù)據(jù)進行了詳細的檢查,確保爬取出來的
數(shù)據(jù)無誤,并且能夠滿足本次研究要求。本次爬取的總數(shù)據(jù)條數(shù)達到660條,
這些數(shù)據(jù)會在分析過程中進行有效利用,為本次項目提供可靠的結(jié)果。
為了對房天下網(wǎng)站網(wǎng)頁信息進行分析,首先要明確我們需要爬取的新房
房屋參數(shù),新房參數(shù)有名稱、戶型、面積、地址、價格;在進行數(shù)據(jù)清洗之后,
對數(shù)據(jù)進行多維度分析可以讓我們更利于了解房源信息變化情況,達到如何購
買投資的目的,如行政區(qū)以及價格(元/㎡)分析,可以查看每個行政區(qū)最高新房
單價,從而判斷出哪個行政區(qū)新房價格較貴,哪個行政區(qū)新房價格較為實惠;
此外,我們也可以分析某個行政區(qū)的新房數(shù)量占比,根據(jù)其新房數(shù)量占比來評
估該行政區(qū)投資價值,從而判斷出哪個房屋新房投資較為有利,哪個行政區(qū)投
資較為不利,讓用戶可以據(jù)此做出投資理財收益最大化的決定。
5
湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計
2.3技術(shù)分析
2.3.1網(wǎng)絡(luò)爬蟲技術(shù)
網(wǎng)絡(luò)爬蟲是計算機信息獲取的一種重要技術(shù)。網(wǎng)絡(luò)爬蟲也稱為網(wǎng)絡(luò)蜘蛛、
Web爬蟲、螞蟻采集等,通過自動抓取網(wǎng)絡(luò)上的信息,并建立相應(yīng)的數(shù)據(jù)庫,是
一種數(shù)據(jù)抓取實現(xiàn)的技術(shù)。
要實現(xiàn)網(wǎng)絡(luò)爬蟲需要考慮的因素:首先,爬蟲的頁面發(fā)現(xiàn),它抓取網(wǎng)頁中
的URL,并建立一個URL隊列,讓爬蟲去爬??;其次,爬蟲的數(shù)據(jù)抓取,它從網(wǎng)
絡(luò)上獲取所需要的數(shù)據(jù);再次,爬蟲的文件處理,它將網(wǎng)頁上的內(nèi)容保存到本
地硬盤中,或者使用簡單的分析進行文本抽取;最后,爬蟲的數(shù)據(jù)導出,將抽
取的數(shù)據(jù)保存到數(shù)據(jù)庫或者文件中,進行分析和處理。
網(wǎng)絡(luò)爬蟲可以自動抓取當前的網(wǎng)頁信息,也可以實現(xiàn)定時的數(shù)據(jù)抓取。目
前,常用的網(wǎng)絡(luò)爬蟲主要有Python的Scrapy、BeautifulSoup4、Selenium等。
本項目使用的是BeautifulSoup4。這些常用的網(wǎng)絡(luò)爬蟲的使用包括模擬HTTP請
求、解析HTML文件等,讓爬蟲可以訪問網(wǎng)絡(luò)上的信息,從而把數(shù)據(jù)自動抓取到
本地。
網(wǎng)絡(luò)爬蟲分析有許多方面。首先,在實施網(wǎng)絡(luò)爬蟲抓取之前,要清楚網(wǎng)絡(luò)
爬蟲的性能要求:爬蟲抓取數(shù)據(jù)的量、反應(yīng)時間以及響應(yīng)網(wǎng)頁數(shù)量等;其次,
要考慮網(wǎng)絡(luò)爬蟲抓取的準確性和穩(wěn)定性,即可靠性;再次,要考慮到由網(wǎng)絡(luò)爬
蟲抓取數(shù)據(jù)的準確性,保證抓取到的內(nèi)容可被正確處理;最后,要注意網(wǎng)絡(luò)爬
蟲抓取時所造成的負載問題,以及如何優(yōu)化網(wǎng)絡(luò)爬蟲抓取的效率,使其達到最
佳狀態(tài)。
因此,在實現(xiàn)網(wǎng)絡(luò)爬蟲時,要注意很多問題,包括數(shù)據(jù)抓取的準確性和性
能要求,以及存在的負載問題。
2.3.2文件存取技術(shù)
DataFrame對象的to_excel方法如圖2-1顯示:
6
湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計
圖2-1DataFrame對象的to_excel方法
2.3.3可視化技術(shù)
可視化技術(shù)是根據(jù)傳統(tǒng)圖形學,交互式圖形和計算機科學理論而發(fā)展起來
的一種實現(xiàn)信息報表、分析和展示的新型技術(shù)??梢暬夹g(shù)可以把復(fù)雜的數(shù)據(jù)
和信息轉(zhuǎn)換為圖表、條形圖等非常有趣而抽象的圖形,進而將數(shù)據(jù)和信息可視
化。
由于可視化技術(shù)運用了多種數(shù)字、圖形和文本,借助技術(shù)以及多種插圖、
圖表實現(xiàn)信息的有效表達,因而在多個行業(yè)領(lǐng)域得到了廣泛的應(yīng)用。各行業(yè)審
視歷史記錄、探索未來趨勢、壓縮大量數(shù)據(jù)源、比較各種數(shù)據(jù)資源等等,都可
以通過可視化技術(shù)實現(xiàn)這些目標。
可視化技術(shù)使用很廣泛,不但廣泛應(yīng)用于教育、政府、企業(yè)等各種領(lǐng)域,
而且在工業(yè)界,醫(yī)學界,社會科學,技術(shù)界都用到了可視化技術(shù)。
總的來說,可視化技術(shù)不僅是一種非常強大的數(shù)據(jù)分析手段,而且還能夠
有效的顯示、處理和存儲數(shù)據(jù)信息。
可視化技術(shù)通過一組可視的圖表實現(xiàn)了大量原始數(shù)據(jù)的壓縮,經(jīng)過統(tǒng)計分
析,將大量復(fù)雜的信息轉(zhuǎn)化為可視性高、易于理解及處理的數(shù)據(jù)。數(shù)據(jù)展示經(jīng)
過數(shù)據(jù)處理,可視化技術(shù)可以有效地避免由于樣本量不足而引發(fā)的局部性偏差。
可視化技術(shù)可以顯示出數(shù)據(jù)和模型之間的關(guān)系,結(jié)合圖表和動畫,有助于人們
對數(shù)據(jù)和模型的理解。
隨著數(shù)據(jù)的不斷增長,傳統(tǒng)的信息處理手段顯得不足以解決多樣化的信息
訪問和共享任務(wù)。因此,可視化技術(shù)在未來會得到進一步發(fā)展,同時還會受到
人工智能技術(shù)的大力支持,并為各種信息處理和使用任務(wù)提供極大的便利。
此外,未來可視化技術(shù)還會進一步完善,通過引入更加智能的模型,幫助
用戶理解、解讀和探索大量數(shù)據(jù),支持大數(shù)據(jù)分析任務(wù)。
7
湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計
可視化技術(shù)既是對大空間和大時間量數(shù)據(jù)進行可視化表征,又可以將復(fù)雜
的數(shù)據(jù)抽象到圖形和標記上,從而有效地處理大規(guī)模復(fù)雜的數(shù)據(jù),成為大數(shù)據(jù)
分析的重要基礎(chǔ)。未來可視化技術(shù)將成為科學家探索、數(shù)據(jù)分析和商業(yè)組織決
策的重要工具,必將受到廣大用戶的熱烈歡迎。
本項目主要使用Python中的Matplotlib庫畫出條形圖等簡單圖形,使結(jié)
果更加直觀,從而得出有用的結(jié)論。
3數(shù)據(jù)采集
3.1采集頁面分析
訪問房天下官網(wǎng)的長沙新房頁面,觀察圖3-1、3-2、3-3發(fā)現(xiàn)URL是以
/house/s/b開頭,以步長1遞增的數(shù)字結(jié)尾,
例如91、92、93訪問不同頁面。可以看出URL規(guī)則簡單明了,變化只需要改變
結(jié)尾數(shù)字就可以實現(xiàn)頁面跳轉(zhuǎn)。循環(huán)訪問的URL也就找出了。
/house/s/b91訪問房天下長沙新房第1頁。
圖3-1房天下長沙新房第1頁
8
湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計
/house/s/b92訪問房天下長沙新房第2頁。
圖3-2房天下長沙新房第2頁
/house/s/b93訪問房天下長沙新房第3頁。
圖3-3房天下長沙新房第3頁
F12查看頁面結(jié)構(gòu),發(fā)現(xiàn)每條房屋數(shù)據(jù)都在同一個ul標簽下各個li標簽中。
9
湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計
ul標簽是一頁的所有數(shù)據(jù)。
圖3-4房天下長沙新房頁面結(jié)構(gòu)1
li標簽是一條房源信息。
圖3-5房天下長沙新房頁面結(jié)構(gòu)2
驗證li是一條房源信息。
10
湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計
圖3-6房天下長沙新房頁面結(jié)構(gòu)3
3.2字段分析
觀察單個li標簽發(fā)現(xiàn)所需數(shù)據(jù)都在div.nlc_details下,通過觀察單個li
標簽,可以得到所需采集的字段包括:名稱、戶型、面積、行政區(qū)和價格。其
中,名稱通過.nlcd_namea選擇器獲取,戶型和面積則需要進行一定的處理,
因為可能出現(xiàn)只有戶型或只有面積的情況。行政區(qū)通過.addressspan.sngrey
選擇器獲取,價格通過'.nhouse_price加正則表達式獲取。
11
湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計
圖3-7字段分析1
12
湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計
名稱字段分析,位于class為nlcd_name的div下的a標簽內(nèi)。
圖3-8字段分析2
戶型與面積字段分析,位于class為house_type的div內(nèi)。
圖3-9字段分析3
13
湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計
行政區(qū)字段分析,位于class為address的div下,class為sngrey的span
標簽內(nèi)。
圖3-10字段分析4
價格字段分析,位于class為address的div內(nèi)。
圖3-11字段分析5
3.3編程實現(xiàn)
1.導包
14
湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計
圖3-12新房數(shù)據(jù)采集1
2.數(shù)據(jù)請求構(gòu)建
圖3-13新房數(shù)據(jù)采集2
3.數(shù)據(jù)解析
15
湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計
圖3-14新房數(shù)據(jù)采集3
4.數(shù)據(jù)存儲
圖3-15新房數(shù)據(jù)采集4
5.保存文件
圖3-16新房數(shù)據(jù)采集5
6.主函數(shù)
16
湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計
圖3-17新房數(shù)據(jù)采集6
完整代碼如下:
#_*_coding:utf-8_*_
importurllib
frombs4importBeautifulSoup
importre
importrandom
fromtqdmimporttqdm
importpandasaspd
'''爬取新房數(shù)據(jù)存入excel'''
#數(shù)據(jù)請求構(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ù)學院畢業(yè)設(shè)計
}
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ù)存儲
defdata_storage(soup):
one_page_data=[]
item_list=soup.select('#newhouse_loupan_list>ul>li')
foriinitem_list:
#{'名稱':None,'戶型':None,'面積':None,'地址':None,'價格'}
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['價格(元/㎡)']=''.join(re.findall(r'\d',i.select('.nhouse_price')[0].text))
one_page_data.append(item)
returnone_page_data
18
湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計
#保存文件
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ù)更加適合分析和運算的要求,把原始
的數(shù)據(jù)轉(zhuǎn)換讓目標任務(wù)的分析會更加容易、準確。需要注意的是,要使得數(shù)據(jù)
清洗后有高質(zhì)量,就必須充分認識清洗過程中可能存在的缺陷,并有意于改進,
充分考慮數(shù)據(jù)類型、空白值、異常值等處理方式。
4.1數(shù)據(jù)清洗
對房天下新房數(shù)據(jù)的清洗,包括清洗行政區(qū)字段中的\t和\n、處理戶型字
段、處理面積字段、將行政區(qū)字段進行統(tǒng)一等。最后按照名稱、戶型、面積、
行政區(qū)、價格的順序重新排列列的順序,并將清洗后的數(shù)據(jù)存入Excel文件。
1.導包和獲取數(shù)據(jù)
圖4-1新房數(shù)據(jù)清洗1
2.清洗行政區(qū)\t\n
圖4-2新房數(shù)據(jù)清洗2
19
湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計
3.處理戶型字段
圖4-3新房數(shù)據(jù)清洗3
4.處理面積字段
圖4-4新房數(shù)據(jù)清洗4
20
湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計
5.錯誤數(shù)據(jù)更改
圖4-5新房數(shù)據(jù)清洗5
6.重排columns順序
圖4-6新房數(shù)據(jù)清洗6
4.2數(shù)據(jù)儲存
數(shù)據(jù)的儲存作用在于以可靠、及時的方式以便隨時收集和瀏覽。儲存的數(shù)
據(jù)可利用于繪制出視覺化的統(tǒng)計圖表,把大量數(shù)據(jù)統(tǒng)籌歸納,可以表達出更復(fù)
雜的社會現(xiàn)象,為明智地做出多項決策,提供重要依據(jù)。換言之,數(shù)據(jù)儲存有
效地提供了體積統(tǒng)計分析手段,幫助決策者及時把握社會信息,進行合理安排,
以便在最大限度地發(fā)揮有效性??紤]到數(shù)據(jù)量和存儲及使用難易程度該項目使
用excel進行存儲。
圖4-7新房清洗后數(shù)據(jù)存儲
每條數(shù)據(jù)有名稱,一居,二居,三居,四居,五居,五居以上,最小面積
(㎡),最大面積(㎡),行政區(qū),價格(元/㎡)這些字段,共存儲數(shù)據(jù)660條。
21
湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計
圖4-8存儲數(shù)據(jù)1
圖4-9存儲數(shù)據(jù)2
4.3完整代碼實現(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ù)學院畢業(yè)設(shè)計
fori,vlistinhxdict.items():
forvinvlist:
df1.loc[i,v]='有'
col_list=df1.columns.tolist()[5:]
forcolincol_list:
df1.loc[df1[col].isna(),col]='無'
#處理面積字段
df3=df1.dropna(subset=['面積'])
#索引:面積list
mjlist=dict(df3['面積'].str.split('~'))
fori,vlistinmjlist.items():
#只有一個數(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]
#瀏陽市->瀏陽
df1.loc[df1['行政區(qū)']=='瀏陽市','行政區(qū)']='瀏陽'
#玉潭街道->寧鄉(xiāng)
df1.loc[df1['行政區(qū)']=='玉潭街道','行政區(qū)']='寧鄉(xiāng)'
#白馬橋街道->寧鄉(xiāng)
df1.loc[df1['行政區(qū)']=='白馬橋街道','行政區(qū)']='寧鄉(xiāng)'
#重排columns順序
df4=df1.loc[:,['名稱','一居','二居','三居','四居','五居','五居以上','最小面積(㎡)','最大
面積(㎡)','行政區(qū)','價格(元/㎡)']]
#存入清洗后的數(shù)據(jù)
df4.to_excel('../數(shù)據(jù)/房天下新房數(shù)據(jù)(清洗后).xlsx')
23
湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計
5數(shù)據(jù)可視化與分析
5.1前期準備
本項目前期準備需要導包導入數(shù)據(jù)以及讓圖形中中文以及負號正確顯示。
因為是excel的數(shù)據(jù)因此可以使用pandas中read_excel函數(shù)直接導入。。
圖5-1前期準備(新房)
24
湖南商務(wù)職業(yè)技術(shù)學院畢業(yè)設(shè)計
5.2數(shù)據(jù)展示
5.2.1行政區(qū)平均新房單價分析
圖5-2新房數(shù)據(jù)展示頁面1
從圖中可以看出,芙蓉區(qū)的平均新房單價是最高的,而瀏陽的平均
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 國際志愿者日活動策劃
- 湖南省張家界市桑植縣2024-2025學年七年級上學期道德與法治期末試卷(含答案)
- 第十八章 平行四邊形 評估測試卷(含答案)2024-2025學年數(shù)學人教版八年級下冊
- 二零二五年度房產(chǎn)共同債權(quán)債務(wù)處理離婚協(xié)議3篇
- 貴州盛華職業(yè)學院《影視欄目包裝專題設(shè)計》2023-2024學年第一學期期末試卷
- 貴州黔南科技學院《設(shè)計原理》2023-2024學年第一學期期末試卷
- 新疆巴音郭楞蒙古自治州(2024年-2025年小學六年級語文)人教版課后作業(yè)(下學期)試卷及答案
- 2024秋季學校教導處教學工作總結(jié):教學之路的探索與成果集萃
- 新疆吐魯番地區(qū)(2024年-2025年小學六年級語文)統(tǒng)編版競賽題((上下)學期)試卷及答案
- 貴州農(nóng)業(yè)職業(yè)學院《船舶駕駛自動化技術(shù)》2023-2024學年第一學期期末試卷
- 英法核動力裝置
- GB/T 41837-2022溫泉服務(wù)溫泉水質(zhì)要求
- YS/T 79-2006硬質(zhì)合金焊接刀片
- 考研考博-英語-山東師范大學押題密卷附帶答案詳解篇
- 實用性閱讀與交流任務(wù)群設(shè)計思路與教學建議
- 中醫(yī)診療器具清洗消毒(醫(yī)院感染防控專家課堂培訓課件)
- 通風設(shè)施標準
- 藥廠生產(chǎn)車間現(xiàn)場管理-PPT課件
- 軸與孔標準公差表
- 防火門施工方案
- 人教PEP版2022-2023六年級英語上冊期末試卷及答案(含聽力材料)
評論
0/150
提交評論