(山东协和学院 山东济南 250109)
关键词:租房 分布式爬虫 Flask
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.4高德地图开放API
高德开放平台向广大开发者提供覆盖移动端和Web端的开发工具,开发者通过调用开发包或接口即可在应用或网页中实现地图显示、标注、位置检索等功能。采用高德地图作为数据可视化的工具,是因为高德地图的可靠、可延展和多功能组合的特性。利用高德地图API,可以在网页前端上快速地进行IP定位、浏览器地图初始化、搜索地名提交Mark、公交到达圈、范围内点位判断、多数据点的聚合和离散、两点之间公交路线规划等系列操作。
2.5 MongoDB数据库
MongoDB 是一个高性能,开源,无模式的文档型数据库,是当前分布式文件存储的数据库产品中最热门的一种。利用Nosql数据的种种特性,可以快速的处理海量的数据,是最契合爬虫、大数据的数据库之一。其良好的性能,面向文档存储,基于 JSON/BSON 可表示灵活的数据结构,简单易用的语法操作,是我们分布式爬虫开发的一个重要的数据库支持。
3.系统设计
可视化租房数据分析,完全从应届毕业生和实习生的角度出发,功能定义清晰,系统耦合度高。分布式爬虫定时启动,全自动采集多平台的租房房源数据,保证租房房源数据的有效和及时,真正的拿到第一手数据。可视化数据分析依靠高德地图,实现地图定位精准,路线规划准确,数据展示速度快,能够在第一时间将数据渲染在web浏览器上。系统功能结构图如图1所示。
图1 系统功能模块图
4.系统实现
4.1 POI地点搜索
POI地点搜索属于用户主动发起的API功能性搜索。用户主动输入目标位置的字符串,在每次输入完成时,都会自动调用POI地点搜索并返回结果到页面上。当用户点击某一搜索结果时,将该结果解码生成标记点展示到页面上。
4.2地图覆盖层
地图覆盖层是属于在地图上规划用户输入的目标通勤时间的范围覆盖层。该功能的前置条件是用户完成了POI搜索并地图生成相应的标记点,同时用户已目标通勤时间时,开始调用API返回结果并生成地图覆盖层。
4.3多功能筛选和多点位聚合
多功能筛选功能是为了用户能够按照自身需求来筛选房源。其中用户可以筛选的内容有:房源来源网站、房源租房类型和房源价格区间。在用户筛选完成以后,点击查询按钮,发起一个Ajax请求到Flask后端。后端接受请求后,解析用户的参数,并查询数据库,将数据返回到前端。前端接受到数据后,解析数据并调用高德地图API,生成标记点经纬度。判断标记点经纬度是否在地图覆盖层内,如标记点位于地图覆盖层内则展示,反之则抛弃。
4.4分布式爬虫的抓取
爬虫抓取是位于后台进行静默工作,无前台展示界面。分布式爬虫在后台定时进行数据抓取并将数据入库。对于库内冗余数据,在Mongo数据库中设置特殊索引TTL为48小时。Mongo数据库会在后台单线程每隔60s轮询是否有数据过期,如若过期则删除过期数据。
4.5分布式爬虫的数据处理
分布式爬虫抓取到互联网上的数据之后,使用正则表达式对数据进行基本的清洗。分布式爬虫只获取网页上的结构化数据,对于非结构化数据,分布式爬虫只获取其访问链接。在处理完数据后,将数据在进行JSON格式化处理,并存放至数据库内。
5.小结
本文是基于国内目前的租房现状开发的租房平台,目的是为高校毕业生提供更好的租房条件。系统基于Flask框架,以浏览器为载体,通过Python语言设计完成。对系统开发采用的技术,系统的需求分析、系统设计进行介绍,本系统利用可视化分析的手段能够快速规划上下班路线、通勤范围以及进行个性化的多功能筛选,在数据的可视化分析之后,可以快速的筛选房源,从而节约租房的时间,能够进行通勤时间的规划,达到减少上下班通勤时间的目的。
参考文献:
[1]戴瑗,郑传行.基于Python的南京二手房数据爬取及分析[J].计算机时代,2021(01):37-40+45.
[2]阳利锋.基于爬虫及GIS技术的路况数据获取及分析[J].智能建筑与智慧城市,2021(04):117-119.2021年山东省大学生创新创业训练计划项目:闪租-租房大数据分析及可视化平台;项目编号:S202113324537。
作者简介:张越茹,女,1999年8月,山西省长治市,本科,山东协和学院计算机科学与技术专业学生,主要研究方向为:软件工程,系统开发等。
指导教师:陈延华,女,硕士,讲师,山东协和学院软件工程教研室教师,主要研究方向为数据挖掘、软件工程。
4