2024年5月5日发(作者:)

租房大数据分析可视化平台的设计与实

摘要:在使用传统的中介租房、线上租房网站时,存在租房数据不清晰、不

透明等情况,并且存在无法在同一时间段内筛选多个网站、多个房源等问题。该

可视化平台基于分布式爬虫进行数据分析,使用高德开放API、FlaskWeb和

Bootstrap前端框架实现了分布式爬虫抓取租房网站信息,前端页面可以快速进

行租房数据的可视化筛选。利用可视化分析的手段能够快速规划上下班路线、通

勤范围以及进行个性化的多功能筛选,能够让多数毕业生在较短的时间内根据自

身的需求来寻找房源。

关键词:租房 可视化 分布式爬虫

1. 引言

近年来,随着国内教育水平地提高,每年的高校毕业生的数量都在稳步上升,

大部分高校毕业生在实习时会选择留在高校所在城市,而其中的大部分高校毕业

生都面临着租房问题。在传统租房中介和线上租房网站进行租房选择时,往往会

遇到房源地点陌生、不熟悉实习地点和房源地点等情况。在面对海量房源数据时,

没有一个方便快捷的筛选方式。以至于毕业生在租房时往往很难一次就能租到自

己心仪的房源,租到的房源距离自己实习的地点过远且上下班通勤路线混乱。很

容易导致陷入“租房-退租-租房”的“死循环”。本文主要介绍高校毕业生租房

大数据分析可视化平台,以高校毕业生的租房要求为水平线,从租房信息获取渠

道、租房的多维度需求、入住以后通勤需求等多个角度进行调查分析租房有可能

会碰到的难题,为高校毕业生提供解决这些问题的对策。

2.系统开发技术介绍

2.1 Redis数据库

Redis是一个高性能的键值数据库,完全开源,符合BSD协议。Redis等键

值缓存产品具有以下三个特点:Redis支持数据持久化,可以将数据保存在磁盘

内存中,重启时可以重新加载使用。Redis不仅支持简单的键值数据,还提供

list、set、Zset、hash等数据结构存储。Redis支持数据备份,即主从模式下

的数据备份。

2.2 分布式爬虫

由于需要在互联网上需要抓取的数据量大,一台机器的效率低下且容易被反

爬监测,所以需要多台机器协同处理。分布式爬虫结合多个主机完成一个爬虫任

务,可以快速有效地提高爬虫效率。在一个分布式爬虫中,最小组成单元是:

Master主爬虫、消息队列、Slaver从爬虫、数据库。整个爬虫系统由Redis作

为消息队列,负责Master爬虫和Slaver爬虫之间的任务的传递;在Slaver爬

虫成功抓取到数据以后,将结果Push到Redis中,Master爬虫负责对消息进行

入库处理。

2.3 Python-Flask后端

Flask是一个基于Python的微框架,依赖于Jinja2模板和WSGI服务。开发

人员根据flash框架提供的功能处理请求并将其返回给用户。在处理复杂页面内

容时需要使用jinja2模板来处理模板,即呈现模板和数据,并将呈现的单词字

符串返回给用户的浏览器。利用Flask可以快速开发后端服务器,并且因为分布

式爬虫和Flask都使用Python开发,语言契合度高,在进行协作时没有语言壁

垒。

2.3 高德地图开放API

高德开放平台向广大开发者提供覆盖移动端和Web端的开发工具,开发者通

过调用开发包或接口即可在应用或网页中实现地图显示、标注、位置检索等功能。

采用高德地图作为数据可视化的工具,是因为高德地图的可靠、可延展和多功能

组合的特性。利用高德地图API,可以在网页前端上快速地进行IP定位、浏览器

地图初始化、搜索地名提交Mark、公交到达圈、范围内点位判断、多数据点的聚

合和离散、两点之间公交路线规划等系列操作。

2.4 MongoDB数据库

MongoDB 是一个高性能,开源,无模式的文档型数据库,是当前分布式文件

存储的数据库产品中最热门的一种。利用Nosql数据的种种特性,可以快速的处

理海量的数据,是最契合爬虫、大数据的数据库之一。其良好的性能,面向文档

存储,基于 JSON/BSON 可表示灵活的数据结构,简单易用的语法操作,是我们

分布式爬虫开发的一个重要的数据库支持。

3.系统设计

租房大数据分析可视化平台,完全从应届毕业生和实习生的角度进行设计与

开发。分布式爬虫定时启动,全自动采集多平台的租房房源数据,保证租房房源

数据的有效和及时,真正的拿到第一手数据。可视化数据分析依靠高德地图,实

现地图定位精准,路线规划准确,数据展示速度快,能够在第一时间将数据渲染

在Web浏览器上。系统功能结构图如图1所示。

图1 系统功能模块图

4.系统实现

4.1数据可视化模块功能

4.1.1 POI地点搜索

POI地点搜索属于用户主动发起的API功能性搜索。用户主动输入目标位置

的字符串,在每次输入完成时,都会自动调用POI地点搜索并返回结果到页面上。

当用户点击某一搜索结果时,将该结果解码生成标记点展示到页面上。

4.1.2地图覆盖层

地图覆盖层是属于在地图上规划用户输入的目标通勤时间的范围覆盖层。该

功能的前置条件是用户完成了POI搜索并地图生成相应的标记点,同时用户已目

标通勤时间时,开始调用API返回结果并生成地图覆盖层。

4.1.3多功能筛选和多点位聚合

多功能筛选功能是为了用户能够按照自身需求来筛选房源。其中用户可以筛

选的内容有:房源来源网站、房源租房类型和房源价格区间。在用户筛选完成以

后,点击查询按钮,发起一个Ajax请求到Flask后端。后端接受请求后,解析

用户的参数,并查询数据库,将数据返回到前端。前端接受到数据后,解析数据

并调用高德地图API,生成标记点经纬度。判断标记点经纬度是否在地图覆盖层

内,如标记点位于地图覆盖层内则展示,反之则抛弃。

4.2分布式爬虫模块功能

4.2.1分布式爬虫数据抓取

爬虫抓取是位于后台进行静默工作,无前台展示界面。分布式爬虫在后台定

时进行数据抓取并将数据入库。对于库内冗余数据,在Mongo数据库中设置特殊

索引TTL为48小时。Mongo数据库会在后台单线程每隔60s轮询是否有数据过期,

如若过期则删除过期数据。

4.2.2冗余数据处理

分布式爬虫抓取到互联网上的数据之后,使用正则表达式对数据进行基本的

清洗。分布式爬虫只获取网页上的结构化数据,对于非结构化数据,分布式爬虫

只获取其访问链接。在处理完数据后,将数据在进行JSON格式化处理,并存放

至数据库内。

5.小结

本文是基于国内目前的租房现状开发的租房平台,目的是为高校毕业生提供

更好的租房条件。系统基于Flask框架,以浏览器为载体,通过Python语言设

计完成。对系统开发采用的技术,系统的需求分析、系统设计进行介绍,本系统

利用可视化分析的手段能够快速规划上下班路线、通勤范围以及进行个性化的多

功能筛选,在数据的可视化分析之后,可以快速的筛选房源,从而节约租房的时

间,能够进行通勤时间的规划,达到减少上下班通勤时间的目的。

参考文献:

[1]戴瑗,郑传行.基于Python的南京二手房数据爬取及分析[J].计算机时

代,2021(01):37-40+45.

[2]阳利锋.基于爬虫及GIS技术的路况数据获取及分析[J].智能建筑与智慧

城市,2021(04):117-119.

[3] 程锦佳. 基于Hadoop的分布式爬虫及其实现[D].北京邮电大学,2010.

项目来源:

2022年校级实验室开放项目:闪租-租房大数据分析及可视化平台;项目编

号:2022SYKF55。

作者简介:黄子昊,男,2004年4月,山东省聊城市,本科,山东协和学院

计算机科学与技术专业学生,主要研究方向为:软件工程,系统开发等。

指导教师:陈延华,女,硕士,讲师,山东协和学院软件工程教研室教师,

主要研究方向为数据挖掘、软件工程。