歡迎大家點贊、收藏、關(guān)注、評論
前言
??房價是一個國家經(jīng)濟(jì)水平的重要體現(xiàn),也是反映居民生活質(zhì)量和水平的最直接的指標(biāo)。目前我國住房制度以租售并舉形式出現(xiàn),房屋所有權(quán)人通過出售、出租房屋獲得租金收入。但是由于房價波動較大,不能及時反映房價變化趨勢,需要預(yù)測房價來指導(dǎo)市場。研究房產(chǎn)價格走勢,可以為房地產(chǎn)價格的調(diào)控提供參考依據(jù)。本系統(tǒng)通過對網(wǎng)絡(luò)爬蟲的分析,研究58同城網(wǎng)房屋數(shù)據(jù),嘗試使用Python技術(shù)進(jìn)行開發(fā),將58同城網(wǎng)房產(chǎn)信息和房屋數(shù)據(jù)盡可能的爬取出來,并對結(jié)果進(jìn)行檢測判斷,最后可視化分析出來,為用戶提供精確的查詢結(jié)果?;赑ython的房價預(yù)測系統(tǒng)旨在提高數(shù)據(jù)挖掘的效率,便于科學(xué)的管理和分析房屋數(shù)據(jù)。
??本文先分析基于Python的房價預(yù)測系統(tǒng)的背景和意義;對常見的爬蟲原理,獲取策略,信息提取等技術(shù)進(jìn)行分析;本系統(tǒng)使用python進(jìn)行開發(fā),MySQL數(shù)據(jù)庫進(jìn)行搭建,實現(xiàn)了房產(chǎn)的數(shù)據(jù)爬??;對數(shù)據(jù)庫的查詢結(jié)果進(jìn)行檢測并可視化分析,對系統(tǒng)的前臺界面進(jìn)行管理,分析爬取的結(jié)果,并對房價預(yù)測結(jié)果進(jìn)行大屏顯示;最后通過測試實現(xiàn)了數(shù)據(jù)爬取,存儲過濾和數(shù)據(jù)可視化分析,以及系統(tǒng)管理等功能。
[關(guān)鍵詞] 爬蟲,python,58同城網(wǎng),關(guān)鍵字,房價預(yù)測
一、項目介紹
??在技術(shù)上,本文利用Python技術(shù)進(jìn)行數(shù)據(jù)爬取,這種簡潔快速,類庫豐富的編程語言可以輕松的實現(xiàn)爬蟲方法。先分析目標(biāo)網(wǎng)站的網(wǎng)頁信息,然后進(jìn)行數(shù)據(jù)處理,完成抓取后進(jìn)行數(shù)據(jù)存儲,最后完成數(shù)據(jù)的可視化呈現(xiàn)。數(shù)據(jù)存儲使用的是MySQL數(shù)據(jù)庫,這種數(shù)據(jù)庫輕巧而功能強(qiáng)大,可以有效的滿足系統(tǒng)的開發(fā)。
在業(yè)務(wù)上,本系統(tǒng)利用用戶無法在海量的58同城網(wǎng)中查找到有效的房屋數(shù)據(jù),因此設(shè)計了本系統(tǒng)對房產(chǎn)價格進(jìn)行存儲,然后整理房屋數(shù)據(jù),并通過可視化的方式展現(xiàn)出來。在后臺也可以對這些房屋數(shù)據(jù)進(jìn)行整理,為用戶提供更加精確的房屋數(shù)據(jù)信息。
二、開發(fā)環(huán)境
開發(fā)語言:Python
框架:flask
Python版本:python3.7.7
數(shù)據(jù)庫:mysql 5.7(一定要5.7版本)
數(shù)據(jù)庫工具:Navicat11
開發(fā)軟件:PyCharm
瀏覽器:谷歌瀏覽器
————————————————
三、功能需求分析
??
在數(shù)據(jù)采集中,通過python進(jìn)行爬蟲設(shè)計,完成商品銷售數(shù)據(jù)、價格數(shù)據(jù)的采集處理。數(shù)據(jù)采集主要包括了分析目標(biāo)網(wǎng)站、目標(biāo)網(wǎng)站的數(shù)據(jù)爬取、數(shù)據(jù)清洗處理、數(shù)據(jù)存儲。其中,數(shù)據(jù)采集階段的功能模塊如圖4.2所示。
1 數(shù)據(jù)采集功能設(shè)計
圖4.2 數(shù)據(jù)采集功能模塊圖
本系統(tǒng)使用58同城網(wǎng)作為目標(biāo)網(wǎng)站,先分析該網(wǎng)站的結(jié)構(gòu),然后對網(wǎng)頁的數(shù)據(jù)進(jìn)行爬取,在爬取過程中會遇到一些重復(fù)的商品銷售數(shù)據(jù),需要對數(shù)據(jù)進(jìn)行清洗,通過數(shù)據(jù)處理獲取到相對完整的房產(chǎn)價格,并把處理后的數(shù)據(jù)存儲在對象中,通過循環(huán)對象來構(gòu)造數(shù)據(jù)存儲的插入語句,再進(jìn)行數(shù)據(jù)存儲,將數(shù)據(jù)保存在MySQL數(shù)據(jù)庫中
2數(shù)據(jù)管理功能設(shè)計
完成數(shù)據(jù)采集后,數(shù)據(jù)存儲在MySQL中,基于Python的房價預(yù)測系統(tǒng)可以對爬取的數(shù)據(jù)進(jìn)行管理,管理員登錄數(shù)據(jù)庫,可以查看每一條房產(chǎn)價格的內(nèi)容以及爬取的目標(biāo)網(wǎng)址,也可以對單條的房產(chǎn)價格進(jìn)行刪除。此外,管理還具有系統(tǒng)管理、用戶管理等功能。前臺用戶具有注冊登錄,信息查看等功能,其中大屏數(shù)據(jù)包括房屋名稱統(tǒng)計、價格趨勢統(tǒng)計、房型統(tǒng)計、類型統(tǒng)計、區(qū)域統(tǒng)計。其中,基于Python的房價預(yù)測系統(tǒng)的數(shù)據(jù)管理功能模塊如圖4.3所示。
圖4.3 數(shù)據(jù)管理功能模塊圖
在系統(tǒng)前臺,所有的用戶都可以通過瀏覽器訪問基于Python的房價預(yù)測系統(tǒng),查看所有大屏數(shù)據(jù)。在系統(tǒng)后臺,管理員對數(shù)據(jù)進(jìn)行管理。
其中普通用戶功能如下:
(1)登錄注冊
(2)查看系統(tǒng)簡介信息。
(3)查看房屋資訊信息。
(4)房產(chǎn)樓盤信息查看,包括樓盤名稱、價格區(qū)間、開盤日期、地址、樓盤圖片。
(5)房屋信息查看,包括房屋名稱、戶型、樓層、小區(qū)、面積、價格等。
(6)房產(chǎn)信息評論(查看其他會員的評論信息,登錄后發(fā)布房產(chǎn)評論)。
(7)對各不同的房產(chǎn)數(shù)據(jù)進(jìn)行點贊、踩、收藏。
(8)個人中心,修改個人信息,修改個人密碼。查看個人收藏的房屋數(shù)據(jù),移除收藏。
(9)信息反饋,發(fā)布反饋信息給管理員,給出系統(tǒng)建設(shè)意見和建議。
系統(tǒng)后臺的管理員功能如下:
(1)管理所有爬取的數(shù)據(jù)信息:更新房產(chǎn)、房屋數(shù)據(jù)信息。包括爬取的網(wǎng)址、房產(chǎn)標(biāo)題、圖片、名稱、標(biāo)簽、價格、開盤日期、交房日期、戶型、地址。
(2)管理用戶信息:用戶信息的添加,刪除。
(3)管理房屋類型信息:房屋類型信息的添加,刪除。
(4)管理區(qū)域信息:區(qū)域信息的添加,刪除。
(5)系統(tǒng)管理:管理系統(tǒng)輪播圖廣告信息,自定義圖片內(nèi)容。
(6)數(shù)據(jù)可視化大屏:通過大屏展示所有的房屋統(tǒng)計、價格趨勢統(tǒng)計、熱銷戶型統(tǒng)計、熱銷區(qū)域等。
(7)留言反饋管理,查看會員反饋的信息,及時處理。
(8)系統(tǒng)簡介管理,修改系統(tǒng)簡介信息。
??
3爬蟲功能需求分析
在目前計算機(jī)信息化快速發(fā)展過程中,房產(chǎn)銷售和租賃逐漸轉(zhuǎn)移到網(wǎng)絡(luò)中來,本題目來源于房地產(chǎn)價格研發(fā)項目的子項目,該項目主要完成一個房價預(yù)測系統(tǒng)的設(shè)計和開發(fā),該系統(tǒng)用于收集當(dāng)前地方房價信息,然后通過爬取、清理、存儲、統(tǒng)計房價信息,并進(jìn)行房價預(yù)測,是現(xiàn)代化房地產(chǎn)不可缺少的部分,為房價的發(fā)展趨勢提供便捷的預(yù)測模式。本文旨在對58同城網(wǎng)上的房產(chǎn)信息、銷售情況、價格信息進(jìn)行爬取,收集各種類型的房產(chǎn)價格信息。然后對房產(chǎn)價格的評分、內(nèi)容進(jìn)行分析,整理房產(chǎn)價格信息。本系統(tǒng)首先分析58同城網(wǎng)站的網(wǎng)站結(jié)構(gòu),查看網(wǎng)站網(wǎng)頁的排版,然后讀取其包含的房產(chǎn)信息。具體分為以下幾個步驟,指定58同城網(wǎng)url,爬取網(wǎng)頁信息,獲取特定的58同城網(wǎng)url存入隊列中,提取房產(chǎn)價格的信息,將信息存入數(shù)據(jù)庫,然后對價格和評分進(jìn)行分析,得出房產(chǎn)價格的可視化視圖。
圖3-1所示數(shù)據(jù)清洗和加工用例。
圖3-1 數(shù)據(jù)清洗和加工用例
在本需求分析階段,不需要關(guān)注如何爬取,只需要關(guān)注爬取什么樣的信息,進(jìn)行怎樣的操作即可,所以先分析58同城網(wǎng)網(wǎng)站的數(shù)據(jù),確定滿足系統(tǒng)要求后,然后查看目標(biāo)網(wǎng)站,將58同城網(wǎng)內(nèi)的有關(guān)房產(chǎn)價格進(jìn)行提取,最后將信息存儲到數(shù)據(jù)庫。
4 數(shù)據(jù)可視化功能需求分析
爬取完房產(chǎn)銷售、房產(chǎn)價格后,需要對數(shù)據(jù)進(jìn)行分析,根據(jù)評分和K-means聚類算法分析出房產(chǎn)價格趨勢,并可視化查詢處理。本系統(tǒng)使用Python進(jìn)行編程,通過HTML、JS等方法顯示數(shù)據(jù)。具體包括:房產(chǎn)價格數(shù)據(jù)展示、房屋數(shù)據(jù)分類、用戶注冊登錄、用戶管理和爬蟲數(shù)據(jù)管理。其中可視化功能用例圖如圖3-2所示。
圖3-2 數(shù)據(jù)分析展示用例
基于Python的房價預(yù)測系統(tǒng)用戶登錄,先驗證信息、成功啟動系統(tǒng)后進(jìn)行登錄。登錄驗證成功后,獲取到登錄權(quán)限,跳轉(zhuǎn)到系統(tǒng)首頁。
進(jìn)入到基于Python的房價預(yù)測系統(tǒng)大屏界面,通過圖形化顯示出房屋名稱統(tǒng)計、價格趨勢統(tǒng)計、房型統(tǒng)計、類型統(tǒng)計、區(qū)域統(tǒng)計。如果查詢失敗,返回基于Python的房價預(yù)測系統(tǒng)的錯誤頁面。
數(shù)據(jù)庫表的設(shè)計
部分?jǐn)?shù)據(jù)庫展示
(1)4.1表: 房屋數(shù)據(jù)信息表
(2)4.4表: 價格信息表
四、核心代碼
部分代碼:
def users_login(request):
if request.method in ["POST", "GET"]:
msg = {'code': normal_code, "msg": mes.normal_code}
req_dict = request.session.get("req_dict")
if req_dict.get('role')!=None:
del req_dict['role']
datas = users.getbyparams(users, users, req_dict)
if not datas:
msg['code'] = password_error_code
msg['msg'] = mes.password_error_code
return JsonResponse(msg)
req_dict['id'] = datas[0].get('id')
return Auth.authenticate(Auth, users, req_dict)
def users_register(request):
if request.method in ["POST", "GET"]:
msg = {'code': normal_code, "msg": mes.normal_code}
req_dict = request.session.get("req_dict")
error = users.createbyreq(users, users, req_dict)
if error != None:
msg['code'] = crud_error_code
msg['msg'] = error
return JsonResponse(msg)
def users_session(request):
'''
'''
if request.method in ["POST", "GET"]:
msg = {"code": normal_code,"msg":mes.normal_code, "data": {}}
req_dict = {"id": request.session.get('params').get("id")}
msg['data'] = users.getbyparams(users, users, req_dict)[0]
return JsonResponse(msg)
def users_logout(request):
if request.method in ["POST", "GET"]:
msg = {
"msg": "退出成功",
"code": 0
}
return JsonResponse(msg)
def users_page(request):
'''
'''
if request.method in ["POST", "GET"]:
msg = {"code": normal_code, "msg": mes.normal_code,
"data": {"currPage": 1, "totalPage": 1, "total": 1, "pageSize": 10, "list": []}}
req_dict = request.session.get("req_dict")
tablename = request.session.get("tablename")
try:
__hasMessage__ = users.__hasMessage__
except:
__hasMessage__ = None
if __hasMessage__ and __hasMessage__ != "否":
if tablename != "users":
req_dict["userid"] = request.session.get("params").get("id")
if tablename == "users":
msg['data']['list'], msg['data']['currPage'], msg['data']['totalPage'], msg['data']['total'], \
msg['data']['pageSize'] = users.page(users, users, req_dict)
else:
msg['data']['list'], msg['data']['currPage'], msg['data']['totalPage'], msg['data']['total'], \
msg['data']['pageSize'] = [],1,0,0,10
return JsonResponse(msg)
五、效果圖
文章來源:http://www.zghlxwxcb.cn/news/detail-721741.html
六、文章目錄
目 錄
摘 要 I
ABSTRACT II
目 錄 II
第1章 緒論 1
1.1背景及意義 1
1.2 國內(nèi)外研究概況 1
1.3 研究的內(nèi)容 1
第2章 相關(guān)技術(shù) 3
2.1 Python簡介 4
2.2 Django 框架介紹 6
2.3 B/S結(jié)構(gòu) 4
2.4 MySQL數(shù)據(jù)庫 4
第3章 系統(tǒng)分析 5
3.1 需求分析 5
3.2 系統(tǒng)可行性分析 5
3.2.1技術(shù)可行性:技術(shù)背景 5
3.2.2經(jīng)濟(jì)可行性 6
3.2.3操作可行性: 6
3.3 項目設(shè)計目標(biāo)與原則 6
3.4系統(tǒng)流程分析 7
3.4.1操作流程 7
3.4.2添加信息流程 8
3.4.3刪除信息流程 9
第4章 系統(tǒng)設(shè)計 11
4.1 系統(tǒng)體系結(jié)構(gòu) 11
4.2開發(fā)流程設(shè)計系統(tǒng) 12
4.3 數(shù)據(jù)庫設(shè)計原則 13
4.4 數(shù)據(jù)表 15
第5章 系統(tǒng)詳細(xì)設(shè)計 19
5.1管理員功能模塊 20
5.2用戶功能模塊 23
5.3前臺功能模塊 19
第6章 系統(tǒng)測試 25
6.1系統(tǒng)測試的目的 25
6.2系統(tǒng)測試方法 25
6.3功能測試 26
結(jié) 論 28
致 謝 29
參考文獻(xiàn) 30文章來源地址http://www.zghlxwxcb.cn/news/detail-721741.html
到了這里,關(guān)于django基于Python的房價預(yù)測系統(tǒng)+爬蟲+大屏可視化分析的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!